仅当覆盖率检查通过时,才能成功构建grails项目

仅当覆盖率检查通过时,才能成功构建grails项目,grails,code-coverage,cobertura,Grails,Code Coverage,Cobertura,我正在开发一个grails应用程序。我们使用cobertura生成代码覆盖率报告。现在我想修改grails项目,以便在代码覆盖率低于90%的情况下构建失败。 如何在grails中实现这一点?我不认为代码覆盖率插件直接支持这一点,但通过连接到功能强大的grails build events基础设施,这一点很容易做到。通过将其放入脚本/_Events.groovy中,如果覆盖率低于某个阈值,则生成将失败: eventStatusFinal = { message -> if (messag

我正在开发一个grails应用程序。我们使用cobertura生成代码覆盖率报告。现在我想修改grails项目,以便在代码覆盖率低于90%的情况下构建失败。
如何在grails中实现这一点?

我不认为代码覆盖率插件直接支持这一点,但通过连接到功能强大的grails build events基础设施,这一点很容易做到。通过将其放入
脚本/_Events.groovy
中,如果覆盖率低于某个阈值,则生成将失败:

eventStatusFinal = { message ->
  if (message ==~ /.*Cobertura Code Coverage Complete.*/) {
    def report = new XmlSlurper().parse(new File("target/test-reports/cobertura/coverage.xml"))
    if (Float.parseFloat(report.'@line-rate'.text()) < 0.90) {
      throw new RuntimeException("coverage too low!")
    }
  }
}   

根据需要调整属性(
行速率
分支速率
)和值。

感谢您的回复。我们将在今天进行测试并让您知道。我们是否需要从任何地方调用此eventStatusFinal Close。我的项目中安装了cobertura插件。它正在为我生成代码覆盖率报告。不确定“消息”将如何发送到此闭包?不,grails构建系统在StatusFinal事件发生时调用它。代码覆盖率插件在完成报告编写后触发事件。哦…我有代码覆盖率插件,但我是手动运行它的,使用“测试应用-覆盖率”…因此,我应该首先了解如何运行corbetura并在每次自动构建时生成报告,而不是手动运行它,然后担心如果覆盖率小于某个%age,使用此闭包会导致构建失败。我的项目中有大约3个事件文件…它们是:(1)/project/.Link\u to\u grails\u plugins/Code-coverage-1.2.4/scripts/\u Events。。。。。(2) /Project/.Link\u到\u grails\u插件/tomcat-1.3.9/scripts/\u事件。。。。。(3) /Project/.Link\u到\u grails\u插件/webtest-3.0.1/scripts/\u事件。。。。。我想我应该把上面的闭包放在第一个位置,对吗?
coverage {
    xml = true
}