一、maven-surefire-plugin简介
      maven-surefire-plugin支持JUnitTestNG。默认情况下,maven-surefire-plugintest目标会自动执行测试源码路径下所有以Test开头、TestTestCase结尾的的Java类。

二、跳过测试
    如果想跳过测试阶段,可用:

1.  mvn package -DskipTests

    想临时性跳过测试代码的编译,可用:

1.  mvn package -Dmaven.test.skip=true

     maven.test.skip同时控制maven-compiler-pluginmaven-surefire-plugin两个插件的行为,即跳过编译,又跳过测试。

三、手动指定测试用例
    maven-surefire-plugintest参数用来指定要运行的测试用例:

1.  //指定测试类  

2.  mvn test -Dtest=RandomGeneratorTest  

3.  //Random开头,Test结尾的测试类  

4.  mvn test -Dtest=Random*Test  

5.  //用逗号分隔指定多个测试用例  

6.  mvn test -Dtest=ATest,BTest

     test参数必须匹配至少一个测试类,否则会报错并导致构建失败。此时可使用:

1.  mvn test -Dtest -DfailIfNoTests = false  

来指定即使没有任何测试用例也不要报错。
四、包含与排除测试用例

1.  <plugin>  

2.      <groupId>org.apahce.maven.plugins<groupId>  

3.      <artifactId>maven-surefire-plugin</artifactId>  

4.      <version>2.5</version>  

5.      <configuration>  

6.      <includes>  

7.          <include>** / *Tests.java</include>  

8.      </includes>  

9.      </configuration>    

10. </plugin>

     使用** / * Test.java 来匹配所有以Tests结尾的Java类。两个星号**用来匹配任意路径,一个星号*用来获取除路径风格符外的0个或多个字符。还可使用excludes来排除一些测试类。

五、测试报告
1.
基本的测试报告
     默认情况下,maven-surefire-plugin会在项目的target/surefire-reports下生成两种格式的错误报告:

·          简单文本格式 

·         JUnit兼容的XML格式

2.测试覆盖率报告
    Cobertura是一个用来测试覆盖率统计工具。Maven通过cobertura-maven-plugin插件与之集成,命令

1.  mvn cobertura:cobertura

六、运行TestNG测试
    TestNG支持使用xml来配置要运行的测试用例。可用:

1.  <configuration>  

2.      <suiteXmlFiles>  

3.      <suiteXmlFile>testing.xml</suiteXmlFile>  

4.      </suiteXmlFiles>  

5.  </configuration>

   TestNG还支持测试组 

1.  <configuration>  

2.      <groups>util,medium</groups>  

3.  </configuration>

七、重用测试代码
    通过配置maven-jar-plugin将测试类打包

1.  <plugin>  

2.      <groupId>org.apahce.maven.plugins<groupId>  

3.      <artifactId>maven-jar-plugin</artifactId>  

4.      <version>2.2</version>  

5.      <executions>  

6.          <execution>  

7.          <goals>  

8.          <goal>test-jar</goal>  

9.          </goals>  

10.     </execution>  

11.     </executions>  

12. </plugin>

    打包后可以声明依赖:

1.  <groupId></groupId>  

2.  <artifactId></artifactId>  

3.  <version></version>  

4.  <type>test-jar</type>  

5.  <scope>test</scope>