Jenkins xUnit插件参数解析:SkippedThreshold及各类阈值差异咨询
Jenkins xUnit插件关键参数解析
先来看你提供的Jenkinsfile代码:
node{ stage ('Checkout') { checkout scm } stage ('Build') { try { sh ''' mvn clean -B org.jacoco:jacoco-maven-plugin:prepare-agent install ''' } catch (err) { // do nothing } finally { //step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) step([$class: 'XUnitBuilder', testTimeMargin: '3000', thresholdMode: 1, thresholds: [ [$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '1'], [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''] ], tools: [ [$class: 'JUnitType', deleteOutputFiles: false, failIfNotNew: false, pattern: '**/target/surefire-reports/TEST-*.xml', skipNoTestFiles: true, stopProcessingIfError: false] ] ]) } } }
接下来逐个解答你的疑问:
一、SkippedThreshold是什么意思?
这个参数是用来针对被跳过的测试用例数量,设置构建状态的触发规则。简单说,就是当本次构建中被跳过的测试数达到你设定的阈值时,Jenkins会将构建标记为「不稳定(Unstable)」或者「失败(Failed)」。
在你的配置里,所有SkippedThreshold的子参数都留空了,意味着你没有启用跳过测试的阈值检查——不管有多少测试被跳过,都不会影响构建的最终状态。
二、failureNewThreshold与failureThreshold、unstableNewThreshold与unstableThreshold的区别
这两组参数的核心区别在于统计范围不同:
- 不带
New的阈值(如failureThreshold、unstableThreshold):统计的是**本次构建中所有测试用例(包括历史上就存在的老测试)**的对应状态数量。比如你设置unstableThreshold: '1',意思是只要本次构建中失败的测试总数量≥1,整个构建就会被标记为「不稳定」。 - 带
New的阈值(如failureNewThreshold、unstableNewThreshold):统计的是本次构建中新增加的测试用例的对应状态数量。比如如果你设置failureNewThreshold: '2',只有当本次新增的测试里,有2个及以上失败时,才会触发对应的构建状态变化(失败或不稳定)。
举个实际例子:
假设你上次构建有3个失败的老测试,这次新增了2个测试,其中1个失败。如果你的failureThreshold: '3',那本次总失败数是4,会触发失败;但如果是failureNewThreshold: '2',本次新增失败数是1,就不会触发。
在你的配置里,所有带New的阈值都留空,说明你只关注「所有测试的总状态数量」,不单独针对新增测试做限制。
内容的提问来源于stack exchange,提问作者Souad
相关产品推荐
相关产品推荐

