我在eclipse中使用Cobertura來生成我的java maven項目的代碼覆蓋率,它工作正常。我有大約15個測試課。每當我運行maven build時,它會爲所有這15個類生成代碼覆蓋。如何爲幾個測試類運行cobertura代碼覆蓋率不是我所有的測試類?
有沒有什麼辦法,我可以運行cobertura代碼覆蓋率報告爲我的幾個測試classess而不是所有的測試類?我也有AllTests
其中我只提到我的幾個測試班,但我猜cobertura不使用AllTests
。
我在eclipse中使用Cobertura來生成我的java maven項目的代碼覆蓋率,它工作正常。我有大約15個測試課。每當我運行maven build時,它會爲所有這15個類生成代碼覆蓋。如何爲幾個測試類運行cobertura代碼覆蓋率不是我所有的測試類?
有沒有什麼辦法,我可以運行cobertura代碼覆蓋率報告爲我的幾個測試classess而不是所有的測試類?我也有AllTests
其中我只提到我的幾個測試班,但我猜cobertura不使用AllTests
。
如果您正在使用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
感謝metacubed的幫助。假設我有三個java測試文件,我不想用cobertura測量。我所有的java測試文件都在'/ src/test/java'中,我不想測試這三個java測試文件test1.java,test2.java和test3.java。 – john
...所以排除,它應該是這樣的 - '
@ user2809564您必須排除編譯後產生的'sampleproject/target/...'中的'.class'文件。是的,測試仍然會運行。 – metacubed
沒有用Cobertura一個命令行工具,你可以用它來提供的類明確的子目錄,或者我相信你可以單獨列出類。 – Kon
@Kon我明白了。如果有什麼我可以在我的eclipse中明確添加我想要測試的測試類列表,那麼這將對我有很大的幫助。 – john
不知道,從來沒有使用Eclipse插件。當我使用Cobertura時,沒有支持JDK 7的Eclipse插件。我使用了獨立工具。看看那些。 – Kon