使用重试功能后如何将Jenkins自动化测试构建状态设为SUCCESS
解决TestNG重试导致Jenkins构建标记为UNSTABLE的问题
问题根源
TestNG的重试机制默认会把首次失败、后续重试通过的测试用例标记为SKIPPED(原失败用例)+ PASSED(重试用例),而你使用的TestNG Result plugin 835.v51会统计跳过测试的占比,当超过设置的0%阈值时,就会将构建状态改为UNSTABLE。
可行解决方案
1. 调整TestNG Result Plugin的跳过阈值
直接在Jenkins流水线的testNgResults步骤中,设置允许的跳过测试百分比,只要大于实际的跳过比例即可。比如你的跳过占比是0.97%,可以设为1%:
testNgResults( skippedThreshold: 1, testResultsPattern: '**/testng-result.xml' // 其他必要参数按需添加 )
如果是全局配置,找到Jenkins中TestNG Result Plugin的设置项,修改「允许的跳过测试百分比」为合适数值即可。
2. 自定义TestNG监听器修正重试测试状态
写一个自定义TestNG监听器,在生成测试报告时,把因重试被标记为SKIPPED的测试用例状态改为PASSED,或者直接移除这类跳过记录:
- 实现
IReporter接口,解析TestNG结果对象,遍历测试方法,识别出属于重试场景的跳过用例,将其状态更新为通过; - 或者结合
IRetryAnalyzer与IInvokedMethodListener,在测试重试时,不把原失败用例标记为跳过。
3. 流水线中强制覆盖构建状态
如果确认所有测试最终都已通过,可在TestNG结果处理完成后,强制将Jenkins构建状态设为SUCCESS:
// 放在testNgResults步骤之后执行 currentBuild.result = 'SUCCESS'
这种方法直接高效,但要确保没有真正失败的测试,避免掩盖潜在问题。
内容的提问来源于stack exchange,提问作者dominik moravčík
相关产品推荐
相关产品推荐

