当前位置: 首页 > 知识库问答 >
问题:

单元测试代码的Jacoco覆盖率

胡和煦
2023-03-14

我正在将ANT构建转换为Maven。我不用声纳。

在Maven中,Jacoco似乎并没有报告单元测试本身的覆盖率,而ANT报告。我也一直在尝试为我的Maven build获得这个,但是我没有找到任何东西。

似乎我应该添加一个

如何在Maven中配置Jacoco,使其报告单元测试代码的覆盖率?


共有1个答案

谭献
2023-03-14

事实证明,实现这一点的唯一方法是使用maven-antrun插件

没有必要添加

但是,报告目标不包括它,而且也不能配置为使用它。您需要专门设置类文件源文件属性,Maven Jacoco插件不允许您这样做。

因此,您需要Maven Antrun插件,并从那里配置和调用它。

<plugins>
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
            <execution>
                <id>default-report</id>
                <phase>package</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                    <target>
                        <taskdef name="report" classname="org.jacoco.ant.ReportTask" classpathref="maven.plugin.classpath" />
                        <report>
                            <executiondata>
                                <file file="${project.build.directory}/jacoco.exec" />
                            </executiondata>
                            <structure name="Coverage">
                                <classfiles>
                                    <fileset dir="${project.build.directory}/classes"/>
                                    <fileset dir="${project.build.directory}/test-classes"/>
                                </classfiles>
                                <sourcefiles encoding="UTF-8">
                                    <fileset dir="src/main/java"/>
                                    <fileset dir="src/test/java"/>
                                </sourcefiles>
                            </structure>
                            <check failonviolation="true" violationsproperty="violation">
                                <rule element="BUNDLE">
                                    <limit counter="INSTRUCTION" value="COVEREDRATIO" minimum="0.95" />
                                </rule>
                            </check>
                            <html destdir="${project.build.directory}/jacoco-internal"/>
                        </report>
                    </target>
                </configuration>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>org.jacoco.ant</artifactId>
                <version>${jacoco.version}</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>

 类似资料:
  • 新的一年 之前因为上家公司的经营出了问题,年前的大裁员,过了一个漫长的春节。 之后加入了新公司,然后正好赶上一个很紧急的项目,忙成狗,因此好久没更新文章了。 不过,我又回来啦! 前言 自动化测试,我们将使用karma和nightmare,内容会包括: 单元测试 e2e测试(放下一篇文章) 其实,单元测试一般用在写公共包的时候,比如通用的js函数库,通用的UI组件库。基本不太会在做业务项目的时候还使

  • 当我的单元测试通过Emma被“覆盖”时,我试图让Sonar IT代码覆盖为我工作。 我的情况: (1)我有大量使用JMockit的单元测试。删除JMockit不是一个选项。我想获得这些测试的单元测试覆盖报告。 (2)我进行了集成测试,简单地用不同的输入场景运行应用程序的核心服务器端部分(这是一个Spring web应用程序)。我想要它的代码覆盖报告。 对于第(1)部分,我选择使用Emma进行单元测

  • 问题内容: 我最近在eclipse中使用了EclEmma插件来查找我的应用程序中JUnits的代码覆盖范围,并且效果很好。 在下一步中,我希望能够找到端到端测试/功能测试的代码覆盖范围,这些代码在外部从我们的应用程序中调用(它们驻留在单独的服务器上)。 基本上,我们将应用程序打包为jar(我们使用maven)并将其部署在服务器上。我们可以在此位置触发功能测试。 在这种情况下,有没有办法找到代码覆盖

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我正在尝试集成Jacoco,以便使用Maven获得Cucumber测试的代码覆盖率。以下是我的项目结构: > -src主java页面 -src主java助手 -src-测试-java-资源-功能 -src测试java步骤 以下是我的POM中的Jacoco配置。xml 我能够生成代码覆盖率报告。但是,在报告中,它涵盖了-src主包中的所有类。根据不同的google搜索和SO帖子,我试图修改POM以排