我有一个maven项目(link),我想在上面运行代码覆盖率。
我在主项目pom文件上运行了命令mvn test-Pcoverage jacoco:prepare agent jacoco:report
,但没有生成报告。相反,我得到的警告是
[INFO] --- jacoco-maven-plugin:0.7.7.201606060606:report (post-test) @ pulsar-discovery-service ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.7.201606060606:prepare-agent (default-cli) @ pulsar-discovery-service ---
[INFO] argLine set to -javaagent:/home/jai1/.m2/repository/org/jacoco/org.jacoco.agent/0.7.7.201606060606/org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=/home/jai1/pulsar/pulsar-discovery-service/target/jacoco.exec
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.7.201606060606:report (default-cli) @ pulsar-discovery-service ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
有人能建议我如何用这个pom文件生成代码覆盖率报告吗。我正在使用apache-maven-3.3。9和testNG。
It seems like you are missing below line in pom.xml
<destFile>
${project.build.directory}/coverage-reports/jacoco-unit.exec
</destFile>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.1.201405082137</version>
<executions>
<execution>
<id>prepare-jacoco-4-unit-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<destFile>
${project.build.directory}/coverage-reports/jacoco-unit.exec
</destFile>
<propertyName>jacocoArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>create-jacoco-reports-4-unit-tests</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<dataFile>
${project.build.directory}/coverage-reports/jacoco-unit.exec
</dataFile>
</configuration>
</execution>
</executions>
</plugin>
然后在maven surefire插件中,应定义以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<skipTests>${skipUnitTests}</skipTests>
<argLine>${jacocoArgLine}</argLine>
</configuration>
</plugin>
以下是对我们有效的方法:
设置一些属性:
<properties>
...
<!-- versions below are last ones that are Java 6 compatible -->
<version.jacoco-agent>0.7.4.201502262128</version.jacoco-agent>
<jacocoArgLine />
<surefire.base.argLine>-XX:-UseSplitVerifier -XX:MaxPermSize=384m -Xmx1024m -Djava.awt.headless=true</surefire.base.argLine>
...
</properties>
以及覆盖范围
配置文件:
<profile>
<id>coverage</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<argLine>${surefire.base.argLine} @{jacocoArgLine}</argLine>
<systemPropertyVariables>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
你的pom。xml包含
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine> -Xmx2G -XX:MaxDirectMemorySize=8G
-Dio.netty.leakDetectionLevel=advanced</argLine>
</configuration>
</plugin>
而JaCoCo留档为准备代理目标状态
如果您的项目已经为测试执行定义了VM参数,请确保它们将包括由JaCoCo定义的属性。
... 将“argLine”定义为Maven属性,而不是Maven surefire插件配置的一部分:
<properties>
<argLine>-your -extra -arguments</argLine>
</properties>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- no argLine here -->
</configuration>
</plugin>
我正在使用Android Studio 1.2。2和Gradle插件1.2。3. 我正在尝试生成代码覆盖率报告,而不运行,只运行。我希望避免需要连接设备或模拟器,这样我就可以加快Jenkins服务器上的构建速度。 到目前为止,我所能做的最好的事情就是在报告中包含单元测试执行数据,如下所述:Android Studio中的Jacoco代码覆盖。这对于显示所有测试的结果很有用,但是目前我只想运行单元测
我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为
我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j
我正在尝试使用JaCoCo-javaagent传递VM参数来获得代码覆盖率 -Java agent:/test/jaco co/jaco agent . jar = dest file =/test/jaco co/jaco co . exec,includes=com。*,append=true 我能在jacoco中获得一些价值。执行文件,但无法获取覆盖率报告。我怎样才能把jacoco转化成。执
我正在做一个大学项目,我需要覆盖当地法规,看看我的测试是否做得好。然而,netbeans控制台保持 --- jaco-maven-plugin:0.7.7.201606060606:报告(报告) @ 客户端服务提供器---由于缺少执行数据文件而跳过 JaCoCo 执行。 这是我的pom.xml
我正在尝试生成Jacoco代码覆盖率报告。我已经将AndroidTestCase用于我的测试类。 在过去几天里,我已经关注了堆栈溢出的各种公认答案。结果是否定的。 我的分级文件: