首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Maven 單元測試與覆蓋率報告完整配置指南:Surefire、Cobertura 實戰詳解

     編輯:Java 綜合教學

Maven 單元測試與覆蓋率報告完整配置指南:Surefire、Cobertura 實戰詳解

本文系統梳理 Maven 專案中單元測試執行、報告生成、覆蓋率統計的完整配置方案,涵蓋 maven-surefire-plugin、maven-surefire-report-plugin 及 cobertura-maven-plugin 的進階用法。

一、測試執行與跳過策略

預設測試命名規約

Maven 自動識別 src/test/java 下符合以下模式的類為測試類:

  • Test*.java(以 Test 開頭)
  • *Test.java(以 Test 結尾)
  • *TestCase.java(以 TestCase 結尾)

命令列控制

# 跳過測試編譯與執行
mvn package -DskipTests

# 僅跳過執行,仍編譯測試代碼
mvn package -Dmaven.test.skip=true

# 指定運行單個/多個測試類
mvn test -Dtest=AccountImageServiceImplTest
mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest

# 模糊匹配
mvn test -Dtest=*Test

POM 靜態配置跳過

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

二、測試包含/排除規則

<configuration>
    <includes>
        <include>**/*Test.java</include>
    </includes>
    <excludes>
        <exclude>**/AccountImageUtilTest.java</exclude>
    </excludes>
</configuration>

三、測試報告生成

文字/XML 報告(內建)

maven-surefire-plugin 預設生成 target/surefire-reports 下的 .txt 與 .xml 報告。

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>

執行 mvn surefire-report:report 生成 target/site 下的 HTML 報告。

四、覆蓋率報告 - Cobertura

插件配置

<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>

常用命令

mvn cobertura:cobertura      # 生成報告至 target/site/cobertura/index.html
mvn cobertura:clean          # 清理舊數據
mvn cobertura:check          # 檢查覆蓋率門檻
mvn cobertura:help           # 查看幫助

五、綜合推薦配置片段

<build>
    <plugins>
        <!-- 測試執行核心 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <includes><include>**/*Test.java</include></includes>
                <excludes><exclude>**/*IntegrationTest.java</exclude></excludes>
            </configuration>
        </plugin>
        <!-- HTML 測試報告 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.12.2</version>
        </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>
        </plugin>
    </plugins>
</build>

報告查看路徑

  • 測試報告:target/site/surefire-report.html
  • 覆蓋率報告:target/site/cobertura/index.html
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved