当 JUnit 测试失败时,Mark Gradle 在 Jenkins 中构建不稳定
Posted
技术标签:
【中文标题】当 JUnit 测试失败时,Mark Gradle 在 Jenkins 中构建不稳定【英文标题】:Mark Gradle build unstable in Jenkins when JUnit tests fail 【发布时间】:2012-01-10 17:55:50 【问题描述】:我在 Jenkins 中有一个 Gradle 构建,其中包含作为构建的一部分执行的各种 JUnit 测试。现在,当一些测试失败时,完整的构建被标记为失败 - 因为 Gradle 说构建失败。
如何说服 Gradle 成功构建,然后让 Jenkins 将构建标记为不稳定?对于 ant,这完全没有问题。
【问题讨论】:
【参考方案1】:使用ignoreFailures property in the test task.
apply plugin: 'java'
test
ignoreFailures = true
【讨论】:
是否可以仅从命令行为 jenkins 配置此功能?因为使用此选项 FAILED build 被记录为 SUCCESS 良好的构建成功 - 但詹金斯将构建显示为“成功”而不是“不稳定”:-/。有人对此有很好的解决方案吗?詹金斯的一些插件?什么的 好吧 - 解决方案是使用这个。这个答案中的一些东西***.com/questions/8148122/…我使用了“Text-finder”插件【参考方案2】:你可以使用外部属性来解决这个问题。
if (!ext.has('ignoreTestFailures'))
ext.ignoreTestFailures = false
test
ignoreFailures = project.ext.ignoreTestFailures
在此设置中,默认情况下失败将使构建失败。但是如果你像这样调用 Gradle:gradle -PignoreTestFailures=true test
那么测试失败不会导致构建失败。因此,您可以将 Jenkins 配置为忽略测试失败,但在开发人员手动运行测试时使构建失败。
【讨论】:
【参考方案3】:您可以将其包含在您的主 build.gradle 中,以应用于所有项目和所有测试任务。
allprojects
tasks.withType(Test)
ignoreFailures=true;
【讨论】:
【参考方案4】:由于在我的情况下无法使用失败的测试,因此我发现了以下内容。 如果您使用的是脚本化的 jenkinsfile。可以将测试阶段包装在 try-catch 语句中。
try
stage('test')
sh './gradlew test'
catch (e)
echo "Test FAILED"
这将捕获 gradle 抛出的构建异常,但它会将构建标记为不稳定。
【讨论】:
以上是关于当 JUnit 测试失败时,Mark Gradle 在 Jenkins 中构建不稳定的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins构建失败,因为它正在查找执行junit测试时在logback.xml中定义的日志路径
当@before节中的代码失败时Junit将执行@Test案例吗?