我需要记录每个测试用例的执行时间。我不想使用自定义实现。我想知道在junit5中是否有可用于此的注释。在Btw中,我知道Stopwatch
或Junit4 @Timeout
。
答案 0 :(得分:2)
在查看junit5文档后,我找到了这个示例 TimeExtension
此代码段来自他们的文档:
@ExtendWith(TimingExtension.class)
class TimingExtensionTests {
@Test
void sleep20ms() throws Exception {
Thread.sleep(20);
}
@Test
void sleep50ms() throws Exception {
Thread.sleep(50);
}
}
答案 1 :(得分:1)
我写了BenchmarkExtension
,你可以申请@Benchmark
。您可以按如下方式使用它:
@Benchmark
class BenchmarkTest {
@Test
void notBenchmarked() {
assertTrue(true);
}
@Test
@Benchmark
void benchmarked() throws InterruptedException {
Thread.sleep(100);
assertTrue(true);
}
}
当应用于类时,您将获得一条消息,其中包含该类中所有测试方法的总运行时间。当应用于单个测试方法时,您将只收到该测试的消息。
我希望它最终会进入JUnit Pioneer。
答案 2 :(得分:0)
Junit5还具有@Timout注释。
还有一个assertTimeout
和assertTimeoutPreemptively
(请参阅documentation)。
最后,JUnit 5不具备JUnit 4秒表功能。如前所述,使用TimeExtension
。但是,此扩展名不是发行版的不是(还?)(请参见issue 343)。
答案 3 :(得分:0)