Maven單元測試報告及測試覆蓋率

 對junit單元測試的報告:相似這樣的結果
-------------------------------------------------------
 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個。   若是須要跳過單元測試,則能夠運行以下命令html

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>

等到項目徹底開發完了,須要測試用例的時候將其註釋掉便可。java

本個模塊有兩個測試用例類,若是僅僅想運行一個測試用例該怎麼辦。
運行下面命令:  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是要排除以外測試用例。可使用模糊匹配。**用來匹配任意件路經,*匹配任意類。apache

 

Junit的單元測試報告的pom.xml配置maven

<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單元測試

相關文章
相關標籤/搜索