Re-运行 未通过 Junit 5 测试,但未将其报告为测试结果失败

Re-run failed Junit 5 tests without reporting them as failed in test results

我有一组 JUnit5 测试,它们是 运行 并由 Jenkins 用 gradle 报告。其中一些在我无法控制的情况下不稳定(比方说来自外部服务的“内部服务器错误”)并且是随机的。我可以使用 gradle“测试重试”插件或通过其他方式重新 运行 它们,但随后在测试摘要中出现初始失败,并且在 Jenkins 中报告构建不稳定。但是如果失败的测试在第二次尝试后是好的,则需要构建“成功”。因此,有人知道重新运行 测试而不报告测试结果初始失败的方法吗?

我目前的想法是尝试以下方法:

更新:尝试使用 https://github.com/artsok/rerunner-jupiter 库。由于我不想用自定义 @ReplaceIfExceptions 替换 @Test 注释...对于项目中的所有测试方法,我试图覆盖 ...Extension class 库并将其与“@ExtendWith”一起使用在一些基本测试 class 水平 class。然后了解到,要使这种方法起作用,仍然需要在方法级别用 @TestTemplate 替换 @Test。 因此,现在我正在考虑用我的一些自定义注释替换 @Test,以便能够快速向其中添加任何东西,例如 @ReplaceIfExceptions... 或 @TestTemplate 或任何需要的东西。

最后我使用了 https://github.com/artsok/rerunner-jupiter 库。它在重复失败的测试之前抛出 TestAbortedException,并且这种失败被标记为忽​​略的测试。在这种情况下,构建的结果被标记为成功。需要将 @Test 注释替换为我的自定义注释并向其添加 @TestTemplate,我还从库的扩展 class 进行了扩展,并使用 @ 将我的扩展实现应用到我的基本测试的 class扩展。看起来这是在不使用 @ReplaceIfExceptions... 注释的情况下使用库的唯一方法。每个测试方法。