1

您将如何为 Junit5 构建 @Repeat 注释?

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

并且每个重复应该能够以某种方式记录其编号,因此您可以看到进度。

4

5 回答 5

3

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

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

有关文档和其他示例,请参阅用户指南

于 2017-04-16T15:34:16.073 回答
1

我发现通常当您想要重试整个测试时,最好识别并重试测试中的不稳定操作。

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

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

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

这样,您可以根据需要管理重试资源,并让测试框架做它最擅长的事情:管理测试(而不是易碎的测试目标)。

于 2017-01-27T17:31:12.973 回答
1

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

于 2019-10-30T08:53:47.463 回答
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.


}
于 2020-01-15T11:06:55.507 回答
0

目前无法按照您的要求进行操作,因为没有允许灵活创建测试的扩展点。但是您可以使用产生动态测试的实用方法来做一些事情。

于 2017-01-11T20:02:23.403 回答