我使用jacoco插件进行gradle:
apply plugin: 'kotlin'
jacoco {
toolVersion = "0.7.9"
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled false
csv.enabled false
}
}
然后我想构建一个生产包
./gradlew build jacocoTestReport
问题是:生成的包将由jacoco检测吗?如果是的话,如何构建未装备的包装=准备生产?和代码覆盖率运行?我必须运行构建两次吗?是不可能一次构建代码(签名)然后测试它,测量覆盖率等,如果所有检查都通过,部署它?
答案 0 :(得分:3)
JaCoCo提供了两种执行检测的方法:
不同之处在于,在第一种情况下,检测在执行期间发生在内存中,因此磁盘上不会更改任何类或jar文件 - 引用the second link:
JaCoCo的主要好处之一是Java代理,它可以即时监控类。这样可以简化代码覆盖率分析,因为不需要预先检测和类路径调整。
因此Java代理带来的简化之一就是您不必担心打包或多个构建。这是IMO JaCoCo优于other coverage tools for Java的优势之一,如Cobertura和Clover。
这也是强烈建议使用即时仪器的原因之一 - 引用http://www.jacoco.org/jacoco/trunk/doc/cli.html:
使用JaCoCo进行代码覆盖率分析的首选方法是使用JaCoCo代理进行实时检测。脱机检测有几个缺点,只有在特定方案明确要求此模式时才应使用。
其中一个特定场景是在Android上执行测试,因为无法在其上使用Java代理。因此,AFAIK Android Plugin for Gradle在被指示使用JaCoCo测量覆盖范围时,使用离线检测,因此需要两种类型的构建 - 具有覆盖范围且无需发布。
另一方面,JaCoCo Gradle Plugin将JaCoCo集成到Gradle for Java项目中,AFAIK截至今天提供了仅执行即时检测而非脱机的功能。