pio*_*rek 4 java code-coverage gradle jacoco gradle-plugin
我在 gradle 中使用 jacoco 插件:
apply plugin: 'kotlin'
jacoco {
toolVersion = "0.7.9"
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled false
csv.enabled false
}
}
Run Code Online (Sandbox Code Playgroud)
然后我想构建一个用于生产的包
./gradlew build jacocoTestReport
Run Code Online (Sandbox Code Playgroud)
问题是:生成的包会被 jacoco 检测吗?如果是,如何构建未检测的包=准备好生产?并运行代码覆盖率?我必须运行构建两次吗?是否不可能构建一次代码(对其进行签名),然后对其进行测试、测量覆盖率等,如果所有检查都通过,则部署它?
JaCoCo 提供了两种执行检测的方法:
不同之处在于,在第一种情况下,检测在执行期间发生在内存中,因此磁盘上不会更改任何类或 jar 文件 - 引用第二个链接:
JaCoCo 的主要优点之一是 Java 代理,它可以即时检测类。这大大简化了代码覆盖率分析,因为不需要预先检测和类路径调整。
因此,Java 代理带来的简化之一就是您无需担心打包或多次构建。在我看来,这是 JaCoCo 相对于其他 Java 覆盖工具(例如 Cobertura 和 Clover)的优势之一。
这就是强烈建议使用即时检测的原因之一 - 引用http://www.jacoco.org/jacoco/trunk/doc/cli.html:
使用 JaCoCo 进行代码覆盖率分析的首选方法是使用 JaCoCo 代理进行动态检测。离线检测有几个缺点,只有在特定场景明确需要此模式时才应使用。
其中一种特定场景是在 Android 上执行测试,因为无法在其上使用 Java 代理。因此,据我所知,Gradle 的 Android 插件在指示使用 JaCoCo 测量覆盖率时,会使用离线检测,因此需要两种类型的构建 - 有覆盖率和无覆盖率。
另一方面,JaCoCo Gradle Plugin将 JaCoCo 集成到 Java 项目的 Gradle 中,据我所知,截至目前,它仅提供即时检测而不是离线检测的能力。
归档时间: |
|
查看次数: |
2188 次 |
最近记录: |