2014-06-08 32 views
0

我在eclipse中使用Cobertura來生成我的java maven項目的代碼覆蓋率,它工作正常。我有大約15個測試課。每當我運行maven build時,它會爲所有這15個類生成代碼覆蓋。如何爲幾個測試類運行cobertura代碼覆蓋率不是我所有的測試類?

有沒有什麼辦法,我可以運行cobertura代碼覆蓋率報告爲我的幾個測試classess而不是所有的測試類?我也有AllTests其中我只提到我的幾個測試班,但我猜cobertura不使用AllTests

+0

沒有用Cobertura一個命令行工具,你可以用它來提供的類明確的子目錄,或者我相信你可以單獨列出類。 – Kon

+0

@Kon我明白了。如果有什麼我可以在我的eclipse中明確添加我想要測試的測試類列表,那麼這將對我有很大的幫助。 – john

+0

不知道,從來沒有使用Eclipse插件。當我使用Cobertura時,沒有支持JDK 7的Eclipse插件。我使用了獨立工具。看看那些。 – Kon

回答

1

如果您正在使用Maven的的Cobertura插件,你可以使用兩個單獨的標籤指定過濾:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>${cobertura.version}</version> 
    <configuration> 
     <instrumentation> 
      <ignores> 
       <ignore>org.apache.log4j.*</ignore> 
       ... 
      </ignores> 
      <excludes> 
       <exclude>**/package1/package2/**/*.class</exclude> 
       ... 
      </excludes> 
     </instrumentation> 
    </configuration> 
</plugin> 

<ignores>講述的Cobertura排除所有來電指定的包/班。上面的例子將忽略所有log4j日誌記錄調用的行。

<excludes>告訴Cobertura不處理某些文件。在測試運行過程中不會記錄這些類別的命中。這裏**表示遞歸搜索(當前任何深度的任何目錄)。因此,該示例指出:排除任何具有其全限定名稱中的任何位置的軟件包的類。

您還有一個<includes>來指定類的白名單而不是<excludes>

其他細節可以在這裏找到:Mojo's Maven plugin for Cobertura - Usage

+0

感謝metacubed的幫助。假設我有三個java測試文件,我不想用cobertura測量。我所有的java測試文件都在'/ src/test/java'中,我不想測試這三個java測試文件test1.java,test2.java和test3.java。 – john

+0

...所以排除,它應該是這樣的 - ' /sampleproject/src/test/java/com/example/project/main/test/Test1.class /sampleproject/src目錄/ test/java下/com/example/project/main/test/Test2.class /sampleproject/src/test/java/com/example/project/main/test/Test3.class' 對不對?這些測試是否會運行? – john

+0

@ user2809564您必須排除編譯後產生的'sampleproject/target/...'中的'.class'文件。是的,測試仍然會運行。 – metacubed

相關問題