2016-03-17 34 views
1

信息: Java版本:1.8.0_66 蚂蚁版本:1.9.6Jacoco:无法读取执行的数据文件,Ant任务

我想要做什么:

提供一个代码覆盖率报告该服务器的代码在AWS Windows 2k12服务器上运行。

我做了什么:

  • 完全停止服务器。
  • 将jacocoagent.jar放入服务器的bin文件夹中。注意:这是在Program Files文件夹内
  • 将-javaagent设置附加到服务器启动期间使用的JAVA_OPTS。
  • 启动服务器。
  • 从本地笔记本电脑运行我的示例测试。
  • 完全停止服务器。这产生了一个184kb的jacoco.exec。
  • 将我的build.xml复制到jacoco.exec所在的同一目录。 C:/path/to/exec/jacoco.exec
  • 将jacocoant.jar复制到C:/path/to/jacocoant.jar
  • cd进入C:/ path/to/exec /并运行命令“ant”

结果:

遇到错误无法读取执行数据文件C:/path/to/exec/jacoco.exec

在build.xml:

<project name="Example" default="rebuild" xmlns:jacoco="antlib:org.jacoco.ant"> 

<description> 
    Example Ant build file that demonstrates how a JaCoCo coverage report 
    can be itegrated into an existing build in three simple steps. 
</description> 

<property name="result.dir" location="." /> 
<property name="result.classes.dir" location="${result.dir}/path/to/classes" /> 
<property name="result.report.dir" location="${result.dir}/report" /> 
<property name="result.exec.file" location="${result.dir}/jacoco.exec" /> 

<!-- Step 1: Import JaCoCo Ant tasks --> 
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"> 
    <classpath path="../jacocoant.jar" /> 
</taskdef> 

<target name="clean"> 
    <delete dir="${result.report.dir}" /> 
</target> 

<target name="report"> 
    <!-- Step 3: Create coverage report --> 
    <jacoco:report> 

     <!-- This task needs the collected execution data and ... --> 
     <executiondata> 
      <file file="${result.exec.file}" /> 
     </executiondata> 

     <!-- the class files and optional source files ... --> 
     <structure name="JaCoCo Code Coverage Report"> 
      <classfiles> 
       <fileset dir="${result.classes.dir}" > 
        </fileset> 
      </classfiles> 
      <sourcefiles encoding="UTF-8"> 
       <fileset dir="${src.dir}" /> 
      </sourcefiles> 
     </structure> 

     <!-- to produce reports in different formats. --> 
     <html destdir="${result.report.dir}" /> 
     <csv destfile="${result.report.dir}/report.csv" /> 
     <xml destfile="${result.report.dir}/report.xml" /> 
    </jacoco:report> 
</target> 

我不确定问题是否与exec文件(它可能已损坏)或与我的整个设置。 任何帮助识别和帮助解决问题的赞赏!

谢谢!

+0

你找到答案吗? –

回答

2

我最近有同样的问题,花了很长时间才弄清楚。我希望我解决这个问题能帮助你或其他人。

  1. 使用ant -verbose report查看详细信息。我使用了“ant -verbose reporst”,并得到这样的消息:“java.io.IOException:Incompatible version 1007”。
  2. 由于我使用的是maven,因此我在pom.xml中添加了以下几行代码。注意:版本与您的javaagent版本相同。

    <dependency> <groupId>org.jacoco</groupId> <artifactId>org.jacoco.ant</artifactId> <version>0.7.4.201502262128</version> </dependency>

最后,成功地生成的报告。

0

我在使用gradle和jaCoCo时得到了这个。

我删除了build /目录,并且reran ./gradlew jacocoTestReport,这段时间过去了。

0

与@ sofia的解决方案类似,但对于gradle: 我删除了工具版本后的版本。取而代之的

allprojects { 
    jacoco { 
     toolVersion = '0.7.1.201405082137' 
    } 
} 

我用下面的

allprojects { 
    jacoco { 
     toolVersion = '0.7.1' 
    } 
}