用于记录 Junit5 中每个测试用例的执行时间的注释
Annotation to log the execution time of each test case in Junit5
我需要记录每个测试用例的执行时间。我不想使用自定义实现。我想知道在 junit5
中是否有可用的注释顺便说一句,我知道 Stopwatch
或 Junit4 @Timeout
.
查看 junit5 文档后,我找到了这个示例
TimeExtension
这段代码来自他们的文档:
@ExtendWith(TimingExtension.class)
class TimingExtensionTests {
@Test
void sleep20ms() throws Exception {
Thread.sleep(20);
}
@Test
void sleep50ms() throws Exception {
Thread.sleep(50);
}
}
我写了一个BenchmarkExtension
that you can apply with @Benchmark
。您可以按如下方式使用它:
@Benchmark
class BenchmarkTest {
@Test
void notBenchmarked() {
assertTrue(true);
}
@Test
@Benchmark
void benchmarked() throws InterruptedException {
Thread.sleep(100);
assertTrue(true);
}
}
当应用于 class 时,您将收到一条消息,其中包含 class 中所有测试方法的总 运行 时间。当应用于单个测试方法时,您将仅收到该测试的消息。
我希望它最终会进入 JUnit Pioneer。
Junit5 还有一个 @Timout 注解。
还有一个assertTimeout
和assertTimeoutPreemptively
(参见documentation)。
最后,JUnit 4 秒表功能在 JUnit 5 中不可用。如前所述,请使用 TimeExtension
。然而,这个扩展 不是 (还?)分布的一部分(参见 issue 343)。
如果您使用的是 Sonarqube,您可以找到每个测试的持续时间以及按时间排序的所有测试的总和
test time sorted
all test
在 JUnit 5 - Jupiter 中获取测试用例的执行时间无需执行任何特殊操作。
时间就在 XML 报告中。
在'testCase'元素上,有一个属性'time',它给出了执行测试用例的时间。下面是一个例子。时间以秒为单位
<testcase name="checkZKConnectivityWithAuth"
classname="test.zk.ZookeeperConnectionProviderTests"
time="7.177"/>
<testcase name="checkConfigRetrieval"
classname="test.zk.ZookeeperConnectionProviderTests"
time="0.213"/>
<testcase name="checkConfigInsertion"
classname="test.zk.ZookeeperConnectionProviderTests"
time="0.255"/>
我需要记录每个测试用例的执行时间。我不想使用自定义实现。我想知道在 junit5
中是否有可用的注释顺便说一句,我知道 Stopwatch
或 Junit4 @Timeout
.
查看 junit5 文档后,我找到了这个示例 TimeExtension
这段代码来自他们的文档:
@ExtendWith(TimingExtension.class)
class TimingExtensionTests {
@Test
void sleep20ms() throws Exception {
Thread.sleep(20);
}
@Test
void sleep50ms() throws Exception {
Thread.sleep(50);
}
}
我写了一个BenchmarkExtension
that you can apply with @Benchmark
。您可以按如下方式使用它:
@Benchmark
class BenchmarkTest {
@Test
void notBenchmarked() {
assertTrue(true);
}
@Test
@Benchmark
void benchmarked() throws InterruptedException {
Thread.sleep(100);
assertTrue(true);
}
}
当应用于 class 时,您将收到一条消息,其中包含 class 中所有测试方法的总 运行 时间。当应用于单个测试方法时,您将仅收到该测试的消息。
我希望它最终会进入 JUnit Pioneer。
Junit5 还有一个 @Timout 注解。
还有一个assertTimeout
和assertTimeoutPreemptively
(参见documentation)。
最后,JUnit 4 秒表功能在 JUnit 5 中不可用。如前所述,请使用 TimeExtension
。然而,这个扩展 不是 (还?)分布的一部分(参见 issue 343)。
如果您使用的是 Sonarqube,您可以找到每个测试的持续时间以及按时间排序的所有测试的总和
test time sorted
all test
在 JUnit 5 - Jupiter 中获取测试用例的执行时间无需执行任何特殊操作。
时间就在 XML 报告中。
在'testCase'元素上,有一个属性'time',它给出了执行测试用例的时间。下面是一个例子。时间以秒为单位
<testcase name="checkZKConnectivityWithAuth"
classname="test.zk.ZookeeperConnectionProviderTests"
time="7.177"/>
<testcase name="checkConfigRetrieval"
classname="test.zk.ZookeeperConnectionProviderTests"
time="0.213"/>
<testcase name="checkConfigInsertion"
classname="test.zk.ZookeeperConnectionProviderTests"
time="0.255"/>