gpt4 book ai didi

scala - sbt 忽略测试失败

转载 作者:行者123 更新时间:2023-12-02 03:56:17 26 4
gpt4 key购买 nike

对于 Jenkins 中的 SonarQube 作业,即使某些测试可能会失败,我们仍希望继续进行。目前, Sonar 运行者尚未启动,因为测试失败。在 Maven 中,您只需添加 -DtestFailureIgnore = true,但我找不到任何与 SBT 类似的内容。

我确实找到了 sbt 的 onFailure 东西,但还没有在任何地方找到如何使用它的任何示例。这可以用来忽略测试失败,以便构建作业继续进行,以便 Sonar 运行器随后启动吗?

或者 Jenkins 中是否有一个设置可以忽略构建的结果?我们使用“sbt clean 覆盖率测试覆盖率报告”作为构建命令,并在构建后步骤中使用 Sonar Runner。

最佳答案

终于自己找到了解决方案。

在 SBT 中,您可以定义一个新任务 A,它捕获另一个任务 B 的结果。这种依赖性可确保在新任务 A 启动时运行任务 B。通过捕获结果,任务 B 的结果不是任务 A 的结果,因此如果 B 失败,A 也不会(必须)失败。

因此,在这种情况下,我将创建一个新的“ciTests”任务添加到“build.sbt”

// Define a special test task which does not fail when any test fails,
// so sequential tasks (like SonarQube analysis) will be performed no matter the test result.
lazy val ciTests = taskKey[Unit]("Run tests for CI")

ciTests := {
// Capture the test result
val testResult = (test in Test).result.value
}

现在,在 Jenkins 作业中,它使用 SBT 和命令构建项目(使用 SCoverage SBT plugin ):

update coverage ciTests coverageReport

此构建将成功,忽略任何失败的测试。因此,启动 SonarRunner 的下一个构建步骤将开始分析 Scala 项目并将结果放入 SonarQube 中。

感谢@hugo-zwaal 向我指出this answer这帮助我解决了我的问题。

关于scala - sbt 忽略测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com