------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.cn.qin.actionTest.UserActionTest sdffsdfsdf Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec - in com.cn.qin.actionTest.UserActionTest Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (cobertura-report) < [cobertura]test @ Struts <<< [INFO] [INFO] --- cobertura-maven-plugin:2.5.1:cobertura (cobertura-report) @ Struts --- [INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file Cobertura: Loaded information on 3 classes. Report time: 298ms
運行報告是junit自己的報告輸出,和咱們在Eclipse運行的報告差不多。以上代表運行了3個用例,和預期效果不符的是0個,失敗的用例是0個,忽略的用例數是0個。 如果需要跳過單元測試,則可以運行如下命令
1. mvn package -DskipTests 大家可能要問,為何Maven能夠自己尋找我們編寫的測試類呢?其實還是那句約定大於配置。Maven自動去尋找src/test/java下面的類,當此文件夾下面的類符合以下規范,那麼Maven默認認為他們是單元測試用例類。 Test*.java:任何目錄下以Test為開始的類 *Test.java: 任何目錄下以Test為結尾的類 *TestCase.java: 任何目錄下以TestCase為結尾的類。 如果想在一段時間內節省項目構建時間,暫時全部忽略單元測試。那麼可以在pom.xml中配置如下<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build>
等到項目完全開發完了,需要測試用例的時候將其注釋掉即可。
本個模塊有兩個測試用例類,如果僅僅想運行一個測試用例該怎麼辦。 運行下面命令: test -Dtest=AccountImageServiceImplTest 這個是指定具體運行哪個測試用例。當然需要將pom文件中忽略測試用例的配置注釋掉。 也可以測試多個測試用例: mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest 也可以使用模糊匹配進行測試:mvn test -Dtest=*Test<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <includes> <include>**/*Test.java</include> </includes> <excludes> <exclude>**/AccountImageUtilTest.java</exclude> </excludes> </configuration> </plugin> </plugins> </build>
其中includes是需要測試的類,excludes是要排除之外測試用例。可以使用模糊匹配。**用來匹配任意件路經,*匹配任意類。
Junit的單元測試報告的pom.xml配置
<build> <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> </build>這個默認生成的報告是txt,要生成html的報告需要使用命令mvn surefire-report:report. 這會在target/site下面生成html的報告, 後來經測試發現, 其實maven-surefire-plugin就已經可以生成txt和xml的測試結果,如果要html的報告才需要maven-surefire-report-plugin 4. 測試報告 基本的測試報告上面已經介紹過了,下面我們看看測試覆蓋率的報告。運行如下命令:mvn cobertura:cobertura 其pom.xml配置
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin> </plugins> </build>常用命令 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文件夾下出現了一個site目錄,下面是一個靜態站點,裡面就是單元測試的覆蓋率報告。 詳細配置還可參考:http://zhanshenny.iteye.com/blog/1440571 5. 總結 這次我們介紹了Maven的測試,可以運行項目的單元測試用例,並生成報告。使用者可以根據自己的需要配置測試選項以滿足項目的測試需求。 我自己測試的pom.xml配置插件
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <!--設置包含的測試類 --> <includes> <include>******</include> <include>*/User*</include> </includes> <!-- 設置不進行測試類 --> <excludes> <exclude>Test*</exclude> </excludes> <!-- 跳過測試階段,測試類寫的有問題也會出錯,一般不推薦 --> <!--<skip>true</skip> --> </configuration> </plugin> <!-- 構建項目站點報告插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.0-beta-3</version> <configuration> <!-- 配置站點國際化 --> <locales>zh_CN</locales> <!-- 輸出編碼 --> <outputEncoding>GBK</outputEncoding> </configuration> </plugin> <!-- 項目API doc報告 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.7</version> </plugin> <!-- 單元測試報告html --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>2.12.2</version> <configuration> <showSuccess>false</showSuccess> </configuration> </plugin> <!-- 測試覆蓋率的報告 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> <configuration> <formats> <format>html</format> <format>xml</format> </formats> </configuration> <executions> <execution> <id>cobertura-report</id> <goals> <goal>cobertura</goal> </goals> <phase>test</phase> </execution> </executions> </plugin> </plugins> </build>
生成的測試覆蓋率會在你自己項目的target/site/cobertura/下面 我的路徑是 file:///D:/InstallSoft/V2/workspace/user-parent/Struts/target/site/cobertura/index.html