public abstract class Stopwatch extends java.lang.Object implements TestRule
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);
}
| Constructor and Description |
|---|
Stopwatch() |
| Modifier and Type | Method and Description |
|---|---|
Statement |
apply(Statement base,
Description description)
Modifies the method-running
Statement to implement this
test-running rule. |
protected void |
failed(long nanos,
java.lang.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(java.util.concurrent.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
|
public long runtime(java.util.concurrent.TimeUnit unit)
unit - time unit for returned runtimeprotected void succeeded(long nanos,
Description description)
protected void failed(long nanos,
java.lang.Throwable e,
Description description)
protected void skipped(long nanos,
AssumptionViolatedException e,
Description description)
protected void finished(long nanos,
Description description)
public final Statement apply(Statement base, Description description)
TestRuleStatement to implement this
test-running rule.apply in interface TestRulebase - The Statement to be modifieddescription - A Description of the test implemented in basebase,
a wrapper around base, or a completely new Statement.