加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – sbt忽略测试失败

发布时间:2020-12-16 18:08:21 所属栏目:安全 来源:网络整理
导读:对于Jenkins的SonarQube工作,即使某些测试可能会失败,我们仍希望继续.目前Sonar Runner没有开始,因为测试失败了. 在Maven你只需添加-DtestFailureIgnore = true,但我找不到任何类似的SBT. 我确实为sbt找到了onFailure的东西,但是在任何地方都找不到任何关于
对于Jenkins的SonarQube工作,即使某些测试可能会失败,我们仍希望继续.目前Sonar Runner没有开始,因为测试失败了.
在Maven你只需添加-DtestFailureIgnore = true,但我找不到任何类似的SBT.

我确实为sbt找到了onFailure的东西,但是在任何地方都找不到任何关于如何使用它的例子.这可以用来忽略测试失败,这样构建工作就会继续,所以Sonar Runner会在之后启动吗?

或者Jenkins中有一个设置忽略构建的结果?
我们使用’sbt clean coverage test coverageReport’作为构建命令,并在构建后步骤中使用Sonar Runner.

解决方法

终于找到了解决方案.

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

所以在这种情况下,我添加了为’build.sbt’创建了一个新的’ciTests’任务

// 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,这帮助我解决了我的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读