重复注释Junit5

时间:2017-01-11 12:16:28

标签: java junit junit5

如何为Junit5构建@Repeat注​​释?

此外,我希望该选项能够在IDE中将重复测试报告为一个测试。

每次重复都应该能够以某种方式记录其编号,以便您可以看到进度。

5 个答案:

答案 0 :(得分:3)

从M4开始,JUnit Jupiter为重复测试提供了一流的支持:

@RepeatedTest(10)
void repeatedTest() {
    // ...
}

有关文档和其他示例,请参阅User Guide

答案 1 :(得分:1)

您可以使用@RepeatedTest批注。由于没有给出任何代码示例,请参阅下面的代码示例以清楚了解。

@RepeatedTest(3)
void testsum(RepetitionInfo repetitionInfo){
    //now you access the information for the repetition
    repetitionInfo.getCurrentRepetition(); //Get the current repetition of the corresponding @RepeatedTest method.

    repetitionInfo.getTotalRepetitions(); //Get the total number of repetitions of the corresponding @RepeatedTest method.


}

答案 2 :(得分:0)

由于没有允许灵活创建测试的扩展点,目前无法按照您的要求进行操作。但是,您可以使用生成dynamic tests的实用程序方法执行某些操作。

答案 3 :(得分:0)

我发现通常当您想要重试整个测试时,最好在测试中识别并重试片状操作。

e.g。想象一下,在下面的代码中getResponse()有时会抛出异常。您可以使用Spring Retry(可以使用或不使用其他Spring项目):

@Test
void somethingFlaky() {
    String actual = new RetryTemplate().execute(retryContext -> getResponse());
    assertEquals("Hello World!", actual);
}

在此示例中,如果getResponse()连续三次抛出异常,则整个测试将失败,并在上次尝试中抛出异常。 RetryTemplate可配置各种不同的重试和退避策略(例如,重试8次,每次尝试之间休眠50毫秒,指数退避等)。

通过这种方式,您可以根据需要管理重试资源,并让测试框架尽其所能:管理测试(而不是片状测试目标)。

答案 4 :(得分:0)

@RepeatedTest现在在JUnit 5中可用。您所需的全部都已实现。