Java 从JUnit测试时间中排除@Before方法持续时间
JUnit似乎包含了在报告测试计时之前执行@BeforeClass@所花费的时间 我正在使用JUnit4.12 在这种情况下,与测试相比显示23.863秒,总计25.649秒。 当我手动测试所有方法时,以下是细分:Java 从JUnit测试时间中排除@Before方法持续时间,java,junit,timing,Java,Junit,Timing,JUnit似乎包含了在报告测试计时之前执行@BeforeClass@所花费的时间 我正在使用JUnit4.12 在这种情况下,与测试相比显示23.863秒,总计25.649秒。 当我手动测试所有方法时,以下是细分: 10:11:20.074 [INFO] [mainId] beforeClass completed in 12516ms 10:11:40.083 [INFO] [mainId] beforeTest completed in 20009ms 10:11:44.171 [INFO
10:11:20.074 [INFO] [mainId] beforeClass completed in 12516ms
10:11:40.083 [INFO] [mainId] beforeTest completed in 20009ms
10:11:44.171 [INFO] [mainId] start_test completed in 4076ms
因此,如果我添加beforeTest和start_测试计时,我将接近UI中报告的时间
- 有没有办法告诉JUnit只显示开始测试时间
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);
}
}
摘自谢谢,但据我所知,这将输出到记录器,我已经有了(尽管这更整洁)。除非它也在UI中显示这些计时?@avvi谁在乎UI中显示什么?当经理要求提供测试报告时,您是否会将您的计算机发送给他们?实际上,当我在本地进行单元测试时,我关心UI中显示的内容。这引出了第二个问题,Junit.xml报告将显示什么时间?根据javadoc Junit.sourceforge.net/javadoc/org/Junit/runner/notification/… testStarted()在每个@Test即将被调用时被调用,testFinished()在每个@Test完成时被调用,无论它是否通过。这个怎么样?作为一个例子,看看这个谢谢你的建议@ansh。我将尝试一下。我尝试使用RunListener,但时间仍然包括beforeTest时间。在内部,它必须在测试开始之前调用testStarted。