第十章 使用Maven測試

自動化單元測試,通過maven-surefire-plugin于主流單元測試框架junit3,junit4及TestNG集成。

一、maven-surefire-plugin簡介

Maven不是一個單元測試框架,主流測試框架是junit,TestNG。Maven所作的是在構(gòu)建執(zhí)行到特定生命周期階段,通過maven-surefie-plugin來執(zhí)行JUnit或TestNG的測試用例。maven-surefie-plugin,可以稱之為測試運行器。

默認情況下,maven-surefire-plugin的test目標會自動執(zhí)行測試源碼路徑下所有符合一組命令模式的測試類,模式為:

  • */Test.java:任何子目錄下所有以Test開頭的Java類
  • */Test.java
  • */TestCase.java
    將測試類按上述模式命名,Maven就能自動運行他們。

三、跳過測試

在命令行加入?yún)?shù)skipTests可以跳過測試:
mvn package-DskipTests。

也可以在maven-surefire-plugin配置,不推薦。

...
<configuration>
    <skipTests>true</skipTests>
 </configuration>
...

還運行臨時性的跳過測試代碼的編譯:mvn package-Dmaven.test.skip=true。不推薦。也可以在插件中配置skip為true。

四、動態(tài)指定運行的測試用例

maven-surefire-plugin提供一個test參數(shù)讓Maven用戶在命令行指定要運行的測試用例。例如,只想運行RandomGeneratorTest,使用:mvn test-Dtest=RandomGeneratorTest。test參數(shù)支持符號匹配,使用逗號指定多個測試用例。

test參數(shù)必須匹配一個或多個測試類,如果插件找不到匹配的測試類,會報錯并構(gòu)建失敗。-DfailIfNoTests=false,告訴插件即使沒有任何測試也不報錯。

五、包含與排除測試用例

使用includes、include包含測試類。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <includes>
            <include>**/*Tests.java</include>
        </includes>
    </configuration>
</plugin>

使用excludes、exclude排除測試類。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <excludes>
            <exclude>**/*Tests.java</exclude>
        </excludes>
    </configuration>
</plugin>

六、測試報告

1.基本測試報告

默認,maven-surefire-plugin會在項目的target/surefire-reports目錄下生成兩種格式的錯誤報告:

  • 簡單文本格式
  • 與JUnit兼容的XML格式

2.測試覆蓋率報告

Cobertura——測試覆蓋率統(tǒng)計工具,Maven通過cobertura-maven-plugin與之集成,可以使用簡單命令生成測試覆蓋率報告:mvn cobertura:cobertura。

七、運行TestNG測試

在POM中加入TestNG依賴。

JUnit與TestNG常用類庫對應(yīng)關(guān)系

TestNG運行用戶使用testng.xml文件配置想運行的測試集合。

<?xml version="1.0" encoding="UTF-8"?>
 <suite name="Suite1" verbose="1">
        <test name="Regression1">
            <classes>
                <class name="xx.xx.xx.xxx"/>
           </classes>
        </test。
  </suite>

同時配置maven-surefire-plugin使用該testng.xml:

<plugin>
    ...
     <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

TestNG支持測試組概念:@Test=(group=(“unit”,“medium”))??梢栽诓寮信渲枚鄠€測試組。

<plugin>
     ...
     <configuration>
        <groups>unit,medium</groups>
    </configuration>
</plugin>

八、重用測試代碼

配置maven-jar-plugin將測試類打包:

<plugin>
    <groupId>org.apache.maven.plugin</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <goal>test-jar</goal>
        </execution>
    </executions>
 </plugin>

maven-jar-plugin有兩個目標,分別是jar、test-jar,前者內(nèi)置綁定在default生命周期的package階段,其行為是對項目主代碼打包,后者沒有內(nèi)置綁定,需要顯式聲明該目標來打包測試代碼。test-jar默認綁定生命周期階段為package。

通過依賴聲明使用測試包構(gòu)建。

<dependency>
    <groupId>xxxx</groupId>
    <artifactId>xxxx</artifactId>
    <version>1.0.0-SNAPSHOT</type>
    <type>test-jar</type>
    <scope>test</scope>
</dependency>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 非常感謝大家的支持和鼓勵,我會一如既往的堅持下去,為了我自己,更為我愛的人向前沖刺^_^ **/Test*.jav...
    小煉君閱讀 11,695評論 2 52
  • 使用指導(dǎo) 如何添加外部依賴jar包 在Maven工程中添加依賴jar包,很簡單,只要在POM文件中引入對應(yīng)的<de...
    靜默虛空閱讀 2,926評論 0 13
  • 官方文檔:http://maven.apache.org/guides/introduction/introduc...
    icecrea閱讀 2,222評論 0 2
  • 基本概念 測試過程中,如果有驗證碼的參與,可以通過引入外部jar包或者內(nèi)部控制驗證碼的生成和驗證。 Maven的職...
    依然愛笑的薰衣草閱讀 1,531評論 2 0
  • 1.編寫POM Maven項目的核心文件是pom.xml,POM(Project Objcet Model)項目對...
    zlcook閱讀 6,008評論 7 26

友情鏈接更多精彩內(nèi)容