首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在执行JaCoCo时得到“由于缺少执行数据文件而跳过JaCoCo执行”

在执行JaCoCo时得到“由于缺少执行数据文件而跳过JaCoCo执行”
EN

Stack Overflow用户
提问于 2013-08-07 23:22:50
回答 20查看 162K关注 0票数 167

我正在使用Maven3.0.3、JUnit 4.8.1和Jacoco0.6.3.201306030806,并且我正在尝试创建测试覆盖报告。

我有一个只有单元测试的项目,但是我不能运行报告,当我运行时,我反复得到错误:Skipping JaCoCo execution due to missing execution data file

代码语言:javascript
复制
mvn clean install -P test-coverage

下面是我的pom的配置:

代码语言:javascript
复制
<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的一些输出:

代码语言:javascript
复制
[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] 

你知道我遗漏了什么配置吗?

EN

回答 20

Stack Overflow用户

发布于 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 Semushinreporting 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-

  • tycho.testArgLine -plugin,否则为
  • argLine。

请注意,测试配置不能覆盖这些属性,否则将无法附加JaCoCo代理。如果您需要自定义参数,请附加它们。例如:

${argLine} -your -extra -arguments

生成的覆盖率信息在执行过程中收集,并在进程终止时默认写入到文件中。

您应该在maven-surefire-plugin插件配置中更改以下行(请注意<argLine>中的${argLine} ):

代码语言:javascript
复制
<argLine>-Xmx2048m</argLine>

代码语言:javascript
复制
<argLine>${argLine} -Xmx2048m</argLine>

还要对其他插件maven-failsafe-plugin进行必要的更改,并替换以下内容(同样,请注意${argLine}):

代码语言:javascript
复制
<argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>

代码语言:javascript
复制
<argLine>${argLine} -Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>
票数 172
EN

Stack Overflow用户

发布于 2016-12-07 07:20:06

我遇到了一个不同的问题,返回了相同的错误。

代码语言:javascript
复制
Skipping JaCoCo execution due to missing execution data /target/jacoco.exec

事实是,返回此错误的原因很多,很多。我们在Stack Overflow上试验了不同的解决方案,但发现这个resource是最好的。它推翻了Jacoco可能返回相同错误的许多不同的潜在原因。

对我们来说,解决方案是在配置中添加一个准备代理。

代码语言:javascript
复制
<execution>
   <id>default-prepare-agent</id>
   <goals>
       <goal>prepare-agent</goal>
   </goals>
</execution>

我想大多数用户会因为不同的原因而体验它,所以看看前面提到的资源吧!

票数 29
EN

Stack Overflow用户

发布于 2017-10-10 15:32:35

由于项目中缺少测试,也可能会出现“由于缺少执行数据文件而跳过JaCoCo执行”的错误。例如,当您启动新项目时,根本没有*Test.java文件。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18107375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档