如何为Junit5构建@Repeat注释?
此外,我希望该选项能够在IDE中将重复测试报告为一个测试。
每次重复都应该能够以某种方式记录其编号,以便您可以看到进度。
答案 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中可用。您所需的全部都已实现。