程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Maven單元測試報告及測試覆蓋率,maven單元測試

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

編輯:JAVA綜合教程

Maven單元測試報告及測試覆蓋率,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個。   如果需要跳過單元測試,則可以運行如下命令

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved