org.junit.rules
Class Stopwatch
java.lang.Objectorg.junit.rules.Stopwatch
- All Implemented Interfaces:
- TestRule
The Stopwatch Rule notifies one of its own protected methods of the time spent by a test.
Override them to get the time in nanoseconds. For example, this class will keep logging the time spent by each passed, failed, skipped, and finished test:
public static class StopwatchTest { private static final Logger logger = Logger.getLogger(""); private static void logInfo(Description description, String status, long nanos) { String testName = description.getMethodName(); logger.info(String.format("Test %s %s, spent %d microseconds", testName, status, TimeUnit.NANOSECONDS.toMicros(nanos))); } @Rule public Stopwatch stopwatch = new Stopwatch() { @Override protected void succeeded(long nanos, Description description) { logInfo(description, "succeeded", nanos); } @Override protected void failed(long nanos, Throwable e, Description description) { logInfo(description, "failed", nanos); } @Override protected void skipped(long nanos, AssumptionViolatedException e, Description description) { logInfo(description, "skipped", nanos); } @Override protected void finished(long nanos, Description description) { logInfo(description, "finished", nanos); } }; @Test public void succeeds() { } @Test public void fails() { fail(); } @Test public void skips() { assumeTrue(false); } }An example to assert runtime:
@Test public void performanceTest() throws InterruptedException { long delta = 30; Thread.sleep(300L); assertEquals(300d, stopwatch.runtime(MILLISECONDS), delta); Thread.sleep(500L); assertEquals(800d, stopwatch.runtime(MILLISECONDS), delta); }
- Since:
- 4.12
Constructor Summary | |
---|---|
Stopwatch() |
Method Summary | |
---|---|
Statement |
apply(Statement base, Description description) Modifies the method-running Statement to implement this test-running rule. |
protected void |
failed(long nanos, Throwable e, Description description) Invoked when a test fails |
protected void |
finished(long nanos, Description description) Invoked when a test method finishes (whether passing or failing) |
long |
runtime(TimeUnit unit) Gets the runtime for the test. |
protected void |
skipped(long nanos, AssumptionViolatedException e, Description description) Invoked when a test is skipped due to a failed assumption. |
protected void |
succeeded(long nanos, Description description) Invoked when a test succeeds |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
Stopwatch
public Stopwatch()
Method Detail |
---|
runtime
public long runtime(TimeUnit unit)
-
Gets the runtime for the test.
-
-
- Parameters:
-
unit
- time unit for returned runtime - Returns:
- runtime measured during the test
succeeded
protected void succeeded(long nanos, Description description)
-
Invoked when a test succeeds
-
-
failed
protected void failed(long nanos, Throwable e, Description description)
-
Invoked when a test fails
-
-
skipped
protected void skipped(long nanos, AssumptionViolatedException e, Description description)
-
Invoked when a test is skipped due to a failed assumption.
-
-
finished
protected void finished(long nanos, Description description)
-
Invoked when a test method finishes (whether passing or failing)
-
-
apply
public final Statement apply(Statement base, Description description)
-
Description copied from interface:
TestRule
-
Modifies the method-running
Statement
to implement this test-running rule. -
- Parameters:
-
base
- TheStatement
to be modified -
description
- ADescription
of the test implemented inbase
- Returns:
-
a new statement, which may be the same as
base
, a wrapper aroundbase
, or a completely new Statement.