用于记录Junit5中每个测试用例的执行时间的注释

时间:2017-07-21 05:14:59

标签: time execution junit5

我需要记录每个测试用例的执行时间。我不想使用自定义实现。我想知道在junit5中是否有可用于此的注释。在Btw中,我知道Stopwatch或Junit4 @Timeout

4 个答案:

答案 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);
  }

}

编辑:Source code for TimingExtension

答案 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注释。

还有一个assertTimeoutassertTimeoutPreemptively(请参阅documentation)。

最后,JUnit 5不具备JUnit 4秒表功能。如前所述,使用TimeExtension。但是,此扩展名不是发行版的不是(还?)(请参见issue 343)。

答案 3 :(得分:0)

如果您使用的是 Sonarqube,您可以找到每个测试的持续时间以及按时间排序的所有测试的总时间

test time sorted

all test