我正在使用Maven3.0.3、JUnit 4.8.1和Jacoco0.6.3.201306030806,并且我正在尝试创建测试覆盖报告。
我有一个只有单元测试的项目,但是我不能运行报告,当我运行时,我反复得到错误:Skipping JaCoCo execution due to missing execution data file:
mvn clean install -P test-coverage下面是我的pom的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<reuseForks>true</reuseForks>
<argLine>-Xmx2048m</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<reuseForks>true</reuseForks>
<argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
...
<profile>
<id>test-coverage</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.3.201306030806</version>
<configuration>
<destfile>${basedir}/target/coverage-reports/jacoco-unit.exec</destfile>
<datafile>${basedir}/target/coverage-reports/jacoco-unit.exec</datafile>
</configuration>
<executions>
<execution>
<id>prepare-unit-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- prepare agent for measuring integration tests -->
<execution>
<id>prepare-integration-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<propertyName>itCoverageAgent</propertyName>
</configuration>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>我的所有测试都运行成功。以下是Maven的一些输出:
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:prepare-agent (prepare-unit-tests) @ myproject ---
[INFO] argLine set to -javaagent:/Users/davea/.m2/repository/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002-runtime.jar=destfile=/Users/davea/Dropbox/workspace/myproject/target/jacoco.exec
[INFO]
...
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0
[INFO]
...
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:prepare-agent (prepare-integration-tests) @ myproject ---
[INFO] itCoverageAgent set to -javaagent:/Users/davea/.m2/repository/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002-runtime.jar=destfile=/Users/davea/Dropbox/workspace/myproject/target/jacoco.exec
[INFO]
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (default) @ myproject ---
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO]
[INFO] --- maven-failsafe-plugin:2.14.1:verify (default) @ myproject ---
[INFO] Failsafe report directory: /Users/davea/Dropbox/workspace/myproject/target/failsafe-reports
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:report (jacoco-site) @ myproject ---
[INFO] Skipping JaCoCo execution due to missing execution data file
[INFO] 你知道我遗漏了什么配置吗?
发布于 2014-05-12 17:48:02
jacoco-maven-plugin:0.7.10-SNAPSHOT
来自jacoco:prepare-agent的一句话:
在maven-surefire-plugin的情况下,其中一种方法是使用语法进行后期属性评估:
插件maven-surefire- org.apache.maven.plugins @{argLine} -your -extra -arguments
注意添加到-your -extra -arguments中的@{argLine}。
感谢Slava Semushin和reporting in the comment注意到了这个变化。
jacoco-maven-plugin:0.7.2-SNAPSHOT
下面的jacoco:prepare-agent是这样说的:
org.jacoco:jacoco-maven-plugin:0.7.2-SNAPSHOT:prepare-agent
准备了一个指向JaCoCo运行时代理的属性,该属性可以作为VM参数传递给被测应用程序。根据项目打包类型,默认情况下会设置一个具有以下名称的属性:
打包类型为eclipse-
请注意,测试配置不能覆盖这些属性,否则将无法附加JaCoCo代理。如果您需要自定义参数,请附加它们。例如:
${argLine} -your -extra -arguments
生成的覆盖率信息在执行过程中收集,并在进程终止时默认写入到文件中。
您应该在maven-surefire-plugin插件配置中更改以下行(请注意<argLine>中的${argLine} ):
<argLine>-Xmx2048m</argLine>至
<argLine>${argLine} -Xmx2048m</argLine>还要对其他插件maven-failsafe-plugin进行必要的更改,并替换以下内容(同样,请注意${argLine}):
<argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>至
<argLine>${argLine} -Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>发布于 2016-12-07 07:20:06
我遇到了一个不同的问题,返回了相同的错误。
Skipping JaCoCo execution due to missing execution data /target/jacoco.exec事实是,返回此错误的原因很多,很多。我们在Stack Overflow上试验了不同的解决方案,但发现这个resource是最好的。它推翻了Jacoco可能返回相同错误的许多不同的潜在原因。
对我们来说,解决方案是在配置中添加一个准备代理。
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>我想大多数用户会因为不同的原因而体验它,所以看看前面提到的资源吧!
发布于 2017-10-10 15:32:35
由于项目中缺少测试,也可能会出现“由于缺少执行数据文件而跳过JaCoCo执行”的错误。例如,当您启动新项目时,根本没有*Test.java文件。
https://stackoverflow.com/questions/18107375
复制相似问题