Maven中配置生成單元測試報告配置
對junit單元測試的報告:
1. -------------------------------------------------------
2. T E S T S
3. -------------------------------------------------------
4. Running com.liuyan.account.mail.AccountImageServiceImplTest
5. ---------------------------------1990
6. Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.926 sec
7. Running com.liuyan.account.mail.AccountImageUtilTest
8. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
9.
10. Results :
12. Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
運行報告是junit自己的報告輸出,和咱們在Eclipse運行的報告差不多。以上代表運行了3個用例,和預期效果不符的是0個,失敗的用例是0個,忽略的用例數(shù)是0個。
如果需要跳過單元測試,則可以運行如下命令
1. mvn package -DskipTests
大家可能要問,為何Maven能夠自己尋找我們編寫的測試類呢?其實還是那句約定大于配置。Maven自動去尋找src/test/java下面的類,當此文件夾下面的類符合以下規(guī)范,那么Maven默認認為他們是單元測試用例類。
Test*.java:任何目錄下以Test為開始的類
*Test.java: 任何目錄下以Test為結尾的類
*TestCase.java: 任何目錄下以TestCase為結尾的類。
如果想在一段時間內(nèi)節(jié)省項目構建時間,暫時全部忽略單元測試。那么可以在pom.xml中配置如下
1. <build> 2. <plugins> 3. <plugin> 4. <groupId>org.apache.maven.plugins</groupId> 5. <artifactId>maven-surefire-plugin</artifactId> 6. <version>2.5</version> 7. <configuration> 8. <skipTests>true</skipTests> 9. </configuration> 10. </plugin> 11. </plugins> 12. </build> |
等到項目完全開發(fā)完了,需要測試用例的時候將其注釋掉即可。
本個模塊有兩個測試用例類,如果僅僅想運行一個測試用例該怎么辦。運行下面命令
1. test -Dtest=AccountImageServiceImplTest
這個是指定具體運行哪個測試用例。當然需要將pom文件中忽略測試用例的配置注釋掉。
也可以測試多個測試用例
1. mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest
也可以使用模糊匹配進行測試
1. mvn test -Dtest=*Test
1. <build> 2. <plugins> 3. <plugin> 4. <groupId>org.apache.maven.plugins</groupId> 5. <artifactId>maven-surefire-plugin</artifactId> 6. <version>2.5</version> 7. <configuration> 8. <includes> 9. <include>**/*Test.java</include> 10. </includes> 11. <excludes> 12. <exclude>**/AccountImageUtilTest.java</exclude> 13. </excludes> 14. </configuration> 15. </plugin> 16. </plugins> 17. </build> |
includes是需要測試的類,excludes是要排除之外測試用例。可以使用模糊匹配。**用來匹配任意件路經(jīng),*匹配任意類。
Junit的單元測試報告:
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>2.12.2</version> <configuration> <showSuccess>false</showSuccess> </configuration> </plugin> </plugins> </reporting> |
這個默認生成的報告是txt,要生成html的報告需要使用命令mvn surefire-report:report. 這會在target/site下面生成html的報告
后來經(jīng)測試發(fā)現(xiàn),其實maven-surefire-plugin就已經(jīng)可以生成txt和xml的測試結果,如果要html的報告才需要maven-surefire-report-plugin
4. 測試報告
基本的測試報告上面已經(jīng)介紹過了,下面我們看看測試覆蓋率的報告。運行如下命令
1. mvn cobertura:cobertura
pom配置
<project> ... <reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin> </plugins> </reporting> ... </project> |
常用命令
mvn cobertura:help 查看cobertura插件的幫助
mvn cobertura:clean 清空cobertura插件運行結果
mvn cobertura:check 運行cobertura的檢查任務
mvn cobertura:cobertura 運行cobertura的檢查任務并生成報表,報表生成在target/site/cobertura目錄下
cobertura:dump-datafile Cobertura Datafile Dump Mojo
mvn cobertura:instrument Instrument the compiled classes
在target文件夾下出現(xiàn)了一個site目錄,下面是一個靜態(tài)站點,里面就是單元測試的覆蓋率報告。
詳細配置還可參考:http://zhanshenny.iteye.com/blog/1440571
5. 總結
這次我們介紹了Maven的測試,可以運行項目的單元測試用例,并生成報告。使用者可以根據(jù)自己的需要配置測試選項以滿足項目的測試需求。最后說一下,測試十分重要,往往大手筆的產(chǎn)品測試人員和開發(fā)人員的比例是2:1。