Jenkins SmokeTest任务返回成功但存在1个测试用例失败原因问询
测试有失败用例但Jenkins任务判定成功的常见原因
本次报错日志如下:
[ERROR] Tests run: 170, Failures: 1, Errors: 0, Skipped: 17
- 测试执行进程的退出码被强制置为0:很多测试框架默认只要完成执行、哪怕有失败用例也不会返回非0退出码,比如JUnit默认只在执行过程出现异常才返回非0,单用例失败不会;或者你在Jenkins的构建脚本里加了
set +e这类忽略执行错误的配置,或者测试执行命令后面加了|| true强制返回成功。 - Jenkins未配置测试结果收集规则:默认只会根据构建步骤的进程退出码判断任务成功与否,不会主动解析日志里的测试失败内容。如果没有安装JUnit等测试结果解析插件,或者构建步骤中没有配置「Publish JUnit test result report」这类测试结果收集步骤,Jenkins就感知不到单测失败。
- 测试失败阈值配置不合理:就算配置了测试结果收集插件,也可能手动设置了允许的失败用例数/失败率阈值,比如设置了允许最多2个用例失败就判定任务成功,刚好本次只有1个失败,符合阈值要求就不会标记任务失败。
- 测试失败默认被标记为*不稳定(UNSTABLE)*而非失败(FAILURE):Jenkins任务状态分为成功、不稳定、失败三个等级,多数场景下单测失败默认只会标记为不稳定,不会直接标记失败,你看到的「成功」可能是未区分稳定和不稳定状态,或是全局配置中将不稳定状态按成功处理。
- 日志中的失败不属于当前任务的测试集:该错误日志可能是上游任务打印的,或是测试过程中其他组件输出的错误,当前任务实际执行的测试用例全部成功,Jenkins按实际收集到的当前任务测试结果判定成功。
内容的提问来源于stack exchange,提问作者Stefan Götzmann
相关产品推荐
相关产品推荐

