2016-03-17 60 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' 
    } 
}