使用JaCoCo来测量系统测试覆盖率

286 阅读2分钟

使用JaCoCo来测量系统测试覆盖率

发布者::Sebastian Daschner inEnterprise Java 11/11, 2021 0 Views

测量生产代码的测试覆盖率很快就会成为一个激烈的话题,特别是关于哪个百分比是正确的数字。在视频中,我想向大家展示一种不同的通常代码覆盖率的方法,这种方法使用应用程序的端点进行系统测试,以了解我们的测试方案对所有用例的覆盖情况。

我们将使用JaCoCo和它的JVM代理来收集数据,同时我们的被测试的应用程序正在运行。

你可以使用GitHub上的咖啡店例子

首先,我们将像往常一样构建和运行应用程序,不同的是我们将JaCoCo JVM代理附加到测试中的应用程序

java \
  -javaagent:/.../org.jacoco.agent-0.8.7-runtime.jar \
  -jar target/quarkus-app/quarkus-run.jar

有了这个,我们可以像往常一样使用该应用程序,并将系统测试指向它。代理将在工作目录中放置一个jacoco.exec 文件,我们可以在应用程序停止后检查该文件。

JaCoCo Maven插件可以帮助我们创建一份报告。如视频所示,我们不必将该插件添加到我们的pom.xml ,我们只需以完全限定的方式引用它。

mvn \
  org.jacoco:jacoco-maven-plugin:0.8.7:report \
  -Djacoco.dataFile=jacoco.exec

这将在target/site/jacoco/ 下生成一个网站,我们通过检查来查看实际覆盖结果。

如视频中所示,由于上述原因,这种方法与Quarkus官方的测试覆盖率指南有一定的区别。根据我的经验,用这种方法测量覆盖率对你的项目干扰较小,更有意义,而且实际上与使用的技术无关。

快乐的代码覆盖率测量!

由我们JCG项目的合伙人Sebastian Daschner授权发表在Java Code Geeks上。请看这里的原文。使用JaCoCo来测量系统测试覆盖率

Java Code Geeks撰稿人所表达的观点仅代表其本人。

2021-11-11

Sebastian Daschner