2014-01-14 160 views
1

我是新來的java世界。我們的團隊正在使用Maven將所有東西都構建成單個.war文件。我正在尋找工具來測試.war文件以啓用代碼覆蓋。想法是手動測試.war文件,然後運行測試。Maven代碼覆蓋範圍

我看了幾個工具,但沒有得到正在尋找什麼,例如,艾瑪,小丑,cobertura等尋找簡單的指示。

+0

Maven的更多詳細信息,是很不錯的構建工具。有什麼具體的理由去尋找新的工具嗎? –

+0

我想知道如何使用Maven來構建代碼覆蓋。 – user3193257

+0

儀器.war文件???通常情況下,你會在你的項目上運行maven測試,如果100%通過,然後繼續使用mvn包,它會構建你的戰爭文件。代碼覆蓋符合maven測試步驟。您可以存儲HTML報告,整合統計數據,並且只有在行數超過90%的情況下才能進入包裝步驟。我在我的Grails項目上使用cobertura,在我的Java/groovy項目中使用Emma。安裝/使用非常簡單。不要重新發明輪子! – shuttsy

回答

0

Cobertura會支持。看到這個問題的答案。

Java: measure code coverage for remote scripting tests

如果你想做到這一點的發展,而不是你的構建服務器上,你可能想給eclemma一試。您可以使用eclemma在您的IDE中啓動您的Web應用程序,然後只需運行您想要運行的任何測試(在eclemma之外),它將很好地註釋以綠色運行的代碼。

+0

我想用cobertura-2.0.3來測試.war文件。當我運行cobertura-instrument.bat。我在線程「main」Java.lang.NoClassDefFoundError中得到異常。 – user3193257

1

如果你想測量代碼覆蓋範圍,你應該使用Jacoco。它還允許測量單元測試和集成測試。

所有你需要做的就是添加dependecy:

<dependency> 
    <groupid>org.jacoco</groupid> 
    <artifactid>org.jacoco.core</artifactid> 
    <version>0.6.2.201302030002</version> 
    <scope>test</scope> 
    </dependency> 

,並添加jacoco - Maven的插件。請注意,如果你不會使用聲納,那麼你必須與原始文件路徑

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.6.2.201302030002</version> 
    <executions> 
    <!-- prepare agent for measuring unit tests --> 
    <execution> 
     <id>prepare-unit-tests</id> 
     <goals> 
     <goal>prepare-agent</goal> 
     </goals> 
     <configuration> 
     <destFile>${sonar.jacoco.reportPath}</destFile> 
     </configuration> 
    </execution> 

    <!-- prepare agent for measuring integration tests --> 
    <execution> 
     <id>prepare-integration-tests</id> 
     <goals> 
     <goal>prepare-agent</goal> 
     </goals> 
     <phase>pre-integration-test</phase> 
     <configuration> 
     <destFile>${sonar.jacoco.itReportPath}</destFile> 
     <propertyName>itCoverageAgent</propertyName> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

如果你還想使用聲納,然後指定這樣的屬性來代替$ {} sonar.jacoco.reportPath性質:

<properties> 
    <!-- select JaCoCo as a coverage tool --> 
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin> 
    <!-- force sonar to reuse reports generated during build cycle --> 
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
    <!-- set path for unit tests reports --> 
    <sonar.jacoco.reportPath>${project.basedir}/target/jacoco-unit.exec</sonar.jacoco.reportPath> 
    <!-- all modules have to use the same integration tests report file --> 
    <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath> 
</properties> 

你可以找到http://www.kubrynski.com/2013/03/measuring-overall-code-coverage-in.html