Java 如何使用JaCoCo代理检查代码覆盖率?
我将使用JaCoCo代理将应用程序部署到生产环境中,让它工作一段时间。结果应该有助于我确定可以删除的代码部分 我围绕这个主题开始了一些研究,并准备了HelloWorld应用程序:Java 如何使用JaCoCo代理检查代码覆盖率?,java,code-coverage,jacoco,Java,Code Coverage,Jacoco,我将使用JaCoCo代理将应用程序部署到生产环境中,让它工作一段时间。结果应该有助于我确定可以删除的代码部分 我围绕这个主题开始了一些研究,并准备了HelloWorld应用程序: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world"); } } 然后我编译了类:“javac HelloWorld.java”并得到了H
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
然后我编译了类:“javac HelloWorld.java”并得到了HelloWorld.class文件
现在,我使用以下命令运行应用程序:“java-javaagent:jacocoagent.jar HelloWorld”程序执行并生成jacoco二进制文件。该文件包含一些二进制数据
一切看起来都很好,但是覆盖率报告显示覆盖率为0%,尽管它应该是100%
有没有人遇到过这个问题或纠正过我的错误做法?我使用这些步骤生成了完整的报告。因为我使用maven进行这种操作,所以我在您的步骤之后添加了maven。我根据您的问题创建了HelloWorld.java。然后我遵循以下步骤:
javac HelloWorld.java
输出HelloWorld.class
然后我通过执行java-javaagent:jacocoagent.jar HelloWorld
然后我创建了一个pom.xml文件,其内容如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>test</name>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
</plugin>
</plugins>
</build>
4.0.0
测试
测试
0.0.1-快照
聚甲醛
测试
org.jacoco
jacocomaven插件
0.7.5.201505241946
之后,我创建了一个target/classes
目录。我复制了jacoco.exec
到target/
和HelloWorld.class
到target/class
然后,我执行了mvnjacoco:report
,它将生成一个报告给target/site/jacoco
。其中包含正确的覆盖范围信息
我知道对于一个简单的应用程序来说,使用maven听起来可能不太好。但是我不知道从jacoco.exec生成报告的其他方法。顺便说一下,maven插件版本和jacocoagent版本必须匹配
这是我得到的结果。你们有什么测试吗?如果您没有任何测试代码覆盖率将为0%,我没有任何测试,我的目标是在遗留项目中识别死代码,并提出使用JaCoCo的想法。我正在用代理执行我的应用程序,所以类被加载,方法被执行,它不应该在覆盖率报告中可见吗?谢谢你们的解决方案。据我所知,您使用maven和jacoco插件只是为了解释二进制文件jacoco.exec并查看html报告。我对IntelliJ和Jenkins插件(无mvn)也做了同样的操作,得到了0%的报告。和你做了同样的操作,效果很好。所以看起来IntelliJ IDEA JaCoCo插件和Jenkins插件在这种情况下无法生成正确的报告,因为它们生成的报告覆盖率为0%。