繁体   English   中英

如何使用JaCoCo代理检查代码覆盖率?

[英]How to check code coverage with JaCoCo agent?

我将使用JaCoCo代理将应用程序部署到生产环境中,以使其工作一段时间。 结果应有助于我确定可以删除的代码部分。

我围绕该主题开始了一些研究,并准备了HelloWorld应用程序:

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只是从您的问题中复制而来。 然后,我按照以下步骤操作:

输出HelloWorld.class javac HelloWorld.java然后,我通过执行java -javaagent:jacocoagent.jar HelloWorld创建了jacoco.exec

然后,我创建了一个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>

之后,我创建了一个target/classes目录。 我将jacoco.exec复制到target/并将HelloWorld.class复制到target/classes

然后我执行了mvn jacoco:report ,该报告生成到target/site/jacoco的报告。 其中包含正确的覆盖范围信息。

我知道使用maven对于简单的应用程序可能听起来不太好。 但是我不知道从jacoco.exec生成报告的任何其他方法。 顺便说一下,您的maven插件版本和jacocoagent版本必须匹配。

这就是我得到的结果。 结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM