2015-04-17 47 views
2

進出口使用下面的目標產生jacoco覆蓋報告:JaCoCo覆蓋報告設置(不包括試驗班)

<target name="report" depends="test"> 

      <!-- 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 Ant Example"> 
       <classfiles> 
        <fileset dir="${result.classes.dir}" /> 
       </classfiles> 
       <sourcefiles encoding="UTF-8"> 
        <fileset dir="${src.dir}" > 
        <exclude name="**/*Test*.class"/> 
        </fileset> 
       </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> 

的問題是,該報告考慮到從單元測試的代碼,我認爲這其實是一個錯誤。這樣,您的線路覆蓋率和指令覆蓋率將被人爲地增加(因爲測試線被認爲是100%覆蓋)並且報告正確性受到相當大的影響。我試圖添加此標籤

<exclude name="**/*Test*.class"/ 

在fileset標籤下,希望testClasses將被排除,但它不起作用。你對我的問題有任何想法嗎?我想避免編程 報告修改。 謝謝!

回答

3

您需要從classfiles文件集排除測試類文件:

<structure name="JaCoCo Ant Example"> 
     <classfiles> 
      <fileset dir="${result.classes.dir}"> 
       <exclude name="**/*Test*.class"/> 
      </fileset> 
     </classfiles> 
     <sourcefiles encoding="UTF-8"> 
      <fileset dir="${src.dir}" /> 
     </sourcefiles> 
</structure> 

documentation

「請注意,類文件和來源元素接受任何螞蟻資源集合因此也過濾。類文件集是可能的,並且允許縮小報告範圍,例如:

<classfiles> 
    <fileset dir="classes"> 
     <include name="org/jacoco/examples/important/**/*.class"/> 
    </fileset> 
</classfiles> 

這是因爲實際報告是從classfiles完成的。 sourcefiles可以在報告中包含突出顯示的源代碼 - 當然,人眼無法讀取已編譯的代碼。

從文檔

還是那句話:

類文件:爲Ant資源和資源 集合,可以指定Java類文件,存檔文件(JAR, 戰爭,耳等,或Pack200)集裝箱元素或包含類文件的文件夾。檔案 和遞歸搜索文件夾的類文件。

sourcefiles:爲Ant資源和資源集合 指定相應的源文件 可選容器元素。如果源文件是 指定,某些報告格式包括突出顯示的源代碼。 源文件可以指定爲單個文件或作爲源目錄。

+0

當上述修改爲'build.xml'時,被排除的類仍然是覆蓋率爲0%的報表的一部分,或者被排除的類或包已完成刪除而不是報表的一部分?感謝你的幫助。 – Rao

相關問題