2012-04-27 65 views
2

我有一個項目,其中有emma代碼覆蓋腳本(使用ant)構建並正確生成測試。過濾來自Emma代碼覆蓋率報告的junit測試類

我有兩個包 com.myproject.abc test.com.myproject.abc

所有JUnit測試都在test.com.mywebsite.abc包。我的目標是不包含報告中包含的test.com.myproject.abc包(coverage.xml)。我已經閱讀了有關覆蓋過濾器的emma文檔,並查看了其他幾個示例,但是如果不在測試中包含junit測試,就無法使其工作。

如果我將篩選器包含在檢測目標中......它不會檢測用於junit測試的junit類。結果是一個classNotFoundException。

這是我的代碼。

<target name="emma-instrument" depends="clean" description="instruments the code"> 
     <emma enabled="true"> 
      <instr instrpath="${classes}" destdir="${emma.instr.dir}" 
       metadatafile="${emma.coverage.dir}/coverage.emma" merge="true" > 
       <filter excludes="test.com.myproject.abc"/> 
      </instr> 
     </emma> 

    </target> 

當儀表發生時,它移動所有的儀表類艾瑪/儀器的 - 這是包含在類路徑。

<target name="test" depends="test_preconditions" description="run junit tests"> 
     <junit fork="yes" printsummary="yes" haltonfailure="yes"> 
      <classpath refid="test.classpath" /> 
      <formatter type="plain" usefile="false" /> 
      <batchtest> 
       <fileset dir="${classes}"> 
        <include name="**/*Test*"/> 

       </fileset> 
      </batchtest> 
      <jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" /> 
      <jvmarg value="-Demma.coverage.out.merge=true" /> 
      <jvmarg value="-XX:-UseSplitVerifier"/> 
     </junit> 
    </target> 

所以只是重複 - 是否有可能從Emma Coverage報告中排除JUNIT測試?我需要改變什麼?提前致謝。

我正在使用emma 2.1(代碼覆蓋率),java和ant。

回答

1

您可以使用JaCoCo庫,像這樣:

<target name="test" depends="test_preconditions" description="run junit tests"> 
    <mkdir dir="${test.data.dir}" /> 

    <!-- Run all tests --> 
    <jacoco:coverage destfile="${test.data.dir}/jacoco.exec"> 
     <junit fork="yes" printsummary="yes" haltonfailure="yes"> 
      <classpath refid="test.classpath" /> 
      <formatter type="plain" usefile="false" /> 
      <batchtest> 
       <fileset dir="${classes}"> 
        <include name="**/*Test*"/> 

       </fileset> 
      </batchtest> 
     </junit> 
    </jacoco:coverage> 

    <!-- Generate Code Coverage report 
     See: http://www.eclemma.org/jacoco/trunk/doc/ant.html --> 
    <jacoco:report> 
     <executiondata> 
      <file file="${test.data.dir}/jacoco.exec" /> 
     </executiondata> 

     <structure name="AntTestReporting"> 
      <classfiles> 
       <fileset dir="${build.dir}"> 
        <include name="**/*.class" /> 
        <!-- Exclude classes necessary for testing only from the code coverage report--> 
        <exclude name="**/*Test*.class" /> 
        <!-- Exclude inner classes --> 
        <exclude name="**/*$*.class" /> 
       </fileset> 
      </classfiles> 
     </structure> 

     <html destdir="${coverage.reports.dir}" /> 
    </jacoco:report> 
</target> 

你可以找到更多信息here

+0

這對我有效。 – TechCrunch 2015-04-02 22:03:43

相關問題