You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重跑JUnit5失败用例且不在测试结果中上报初始失败?

最优方案:使用Gradle Test Retry插件原生配置(零代码侵入)

Gradle官方的Test Retry插件本身就支持自动清理重试成功用例的初始失败记录,不需要任何测试代码修改,仅需调整构建配置即可满足需求:

  1. 确认你使用的Test Retry插件版本≥1.2.0
  2. 在build.gradle中添加以下配置:
test {
    retry {
        // 最多重试2次失败用例,可按需调整
        maxRetries = 2
        // 仅针对外部服务相关异常重试,可按需调整匹配规则
        retryOnException = true
        retryOn(exceptions = [IOException::class, RuntimeException::class])
        // 核心配置:重试成功后自动删除初始失败记录,不会写入最终测试结果
        removeFailuresFromRetriedTests = true
    }
}

配置生效后,只要失败用例在重试次数内通过,最终生成的JUnit XML报告里不会存在任何失败记录,Jenkins读取到的测试结果就是全部通过,直接标记构建为成功。

备选方案:JUnit5全局重试扩展(适合需要自定义重试逻辑的场景)

如果你需要在测试框架层实现更灵活的重试规则(比如按异常信息匹配、按用例标签重试等),不需要修改现有@Test注解,也不需要逐个类加扩展引用,使用JUnit5的自动扩展注册机制即可全局生效:

  1. 自定义重试扩展类,实现InvocationInterceptor和TestExecutionExceptionHandler接口,核心逻辑为:捕获测试方法抛出的指定异常后重试,只要任意一次重试成功就正常返回,所有重试失败才向上抛出异常标记用例失败。
  2. 在测试资源目录下新建src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension文件,写入你自定义的重试扩展类的全限定类名,JUnit5会自动扫描并全局加载该扩展。
    该方案完全不需要修改现有测试用例的代码,即可对所有@Test方法生效。

内容的提问来源于stack exchange,提问作者domagile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:48:02