Maven Test


Failures表示要測試的結果與預期值不一致;Errors表示測試代碼或產品代碼發生了未預期的錯誤;Skipped表示那些被標記為忽略的測試方法。在Junit中用戶可以使用@Ignore注解標記忽略測試方法。

 

Maven本身不是一個單元測試框架。Maven所做的只是在構建執行到特定生命周期階段的時候,通過插件來執行JUnit或TestNG的測試用例。Maven-surefire-plugin被稱之為測試運行器(Test Runner)。它可以兼容JUnit3,JUnit4以及TestNG。

在默認情況下,maven-surefire-plugin的test目標會自動執行測試源碼路徑(src/test/java)下所有符合一組命名模式的測試類。這組模式為:

  **/Test*.java

  **/*Test.java

  **/*TestCase.java

只要將測試類按上述模式命名。Maven就能自動運行它們,用戶不需要定義測試集合來聚合測試用例。以Tests結尾的測試是不會得以自動執行的。

maven-compiler-plugin的testCompile和maven-surefire-plugin的test目標都提供了一個參數skip用來跳過測試編譯和測試運行。這個參數的命令行表達式為maven.test.skip

 

maven-surefire-plugin提供了一個test參數讓Maven用戶能夠在命令行指定要運行的測試用例。

mvn test -Dtest=**Test  //指定運行**Test類

 

在POM中配置test運行的類

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

在POM中配置不運行那些測試類

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <exclusions>
            <exclusion>**/*ServiceTest.java</exclusion>
        </exclusions>
    </configuration>
</plugin>

 

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

  簡單文本格式

  與JUnit兼容的XML格式

測試覆蓋率是衡量項目代碼質量的一個重要參考指標。Cobertura是一個開源的測試覆蓋率統計工具。用戶可以使用更簡單的命令為Maven項目生成測試覆蓋率報告。

mvn cobertura:cobertura

 

TestNG

<dependency>
    <groupId>org.testing</groupId>
    <artifactId>testing</artifactId>
    <version>5.9</version>
    <scope>test</scope>
    <classifier>jdk15</classifier>
</dependency>

TestNG允許用戶使用一個名為testing.xml的文件來配置想要運行的測試集合。

<?xmlv version="1.0" encoding="UTF-8" ?>

<suite name="Suite1" verbose="1">
    <test name="Regression1">
        <classes>
            <class name="com.***.***.*Test" />
        </classes>
    </test>
</suite>

然后在maven-surefire-plugin中使用該testing

<plugin>
    <groupId>org.apache,maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifacId>
    <version>2.5</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>testing.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

 

TestNG較JUnit的一大優勢在於它支持測試組的概念。由於用戶可以自由地標注方法所屬的測試組,因此這種機制能讓用戶在方法級別對測試進行歸類。JUnit只能實現類級別的測試歸類。

@Test(groups={"util","medium"})  //將注解下的方法加入到兩個測試組util和medium中

<plugin>
    <groupId>org.apache.maven.plugin</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <groups>util,medium</groups>
    </configuration>
</plugin>

 

Maven配置打包測試類

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

maven-jar-plugin有兩個目標,分別是jar和test-jar。前橫通過maven的內置綁定在default生命周期的package階段運行,其行為就是對項目主代碼進行打包,后者並沒有內置綁定。因此需要顯式聲明該目標來打包測試代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM