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

Npa*_*Npa 5 grails code-coverage cobertura

我正在处理grails应用程序.我们使用cobertura生成代码覆盖率报告.现在我想修改grails项目,如果代码覆盖率小于90%,则构建应该失败.我怎样才能在grails中实现这一目标?

ata*_*lor 4

我不认为代码覆盖插件直接支持这一点,但是通过连接到强大的 grails 构建事件基础设施就可以很容易地做到这一点。通过将其放入您的 中scripts/_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!")
    }
  }
}   
Run Code Online (Sandbox Code Playgroud)

这需要您使用以下命令打开 XML 报告生成grails-app/conf/BuildConfig.groovy

coverage {
    xml = true
}
Run Code Online (Sandbox Code Playgroud)

根据需要调整属性 ( line-rate, ) 和值。branch-rate