Maven中测试插件(surefire)的相关配置及常用方法


原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

1. 在Maven中配置测试插件surefire

      
        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
      

2. 默认被执行的测试
   
   默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例。
"**/Test*.java" - includes all of its subdirectories and all java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all java filenames that end with "Test".
"**/*TestCase.java" - includes all of its subdirectories and all java filenames that end with "TestCase".

3. 跳过测试    Skipping Tests

    
      
        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          true
        
      
    
  

补充:如果使用Junit或者TestNG也可以直接在当前测试方法上加注解@Ignore忽略,这是加了该注解的也都会被skip

4. 排除测试 Exclusions (Junit & TestNG 通用)

    
      
        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          
            **/TestCircle.java
            **/TestSquare.java
          
        
      
    
  
5. 仅执行一个/一类测试(repeat)   Running a Single Test   (Junit & TestNG 通用)

在开发过程中配置命令:
mvn -Dtest=TestCircle test   test表示当前测试方法所在的测试类,不需要扩展名 The value for the test parameter is the name of the test class
mvn -Dtest=TestCi*le test    *表示任何
mvn -Dtest=TestSquare,TestCi*le test    如果测试类没有使用规范的命名,可以显示的直接指定测试方法的名称

Running a set of methods in a Single Test Class

With version 2.7.3, you can run only n tests in a single Test Class.
 NOTE : it's supported for junit 4.x and TestNG. 
You must use the following syntax
mvn -Dtest=TestCircle#mytest test
You can use patterns too
mvn -Dtest=TestCircle#test* test
As of surefire 2.12.1, you can select multiple methods (JUnit4X only at this time, patches welcome)
mvn -Dtest=TestCircle#testOne+testTwo test

6. 如何使用TestNG


      org.testng
      testng
      6.3.1
      test
    
If  using an older version of TestNG (<= 5.11)
    
      org.testng
      testng
      5.11
      test
      jdk15
    

默认会执行的测试用例*Test.java

7. 如何使用TestNG的   suite

        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          
                testng.xml
            
        
      
注意: This configuration will override the includes and excludes patterns and run all tests in the suite files.

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

8.  执行群组测试 execute one or more specific groups  (Junit & TestNG 通用)


 
        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          functest,perftest
        
      

9. 多线程的运行测试用例 Running tests in parallel (Junit & TestNG 通用)



        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          methods
          10
        
      

10. 如何使用Junit  Using JUnit



      junit
      junit
      4.8.1
      test
    
11. 如何使用Junit Category    Using JUnit Categories


      maven-surefire-plugin
      2.11
      
        com.mycompany.SlowTests
      
    

仅有带该注解的测试 或者 是当前注解 类/接口的 子类 会被执行,
This will execute only those tests annotated with the @Category(com.mycompany.SlowTests.class) annotation and 
those tests annotated with @Category(com.mycompany.SlowerTests.class) if class/interface SlowerTests is subclass of SlowTests:
    public interface SlowTests{}
    public interface SlowerTests extends SlowTests{}
    ------------------------------------------------------------------------------------------------
public class AppTest {
      @Test
      @Category(com.mycompany.SlowTests.class)
      public void testSlow() {
        System.out.println("slow");
      }

      @Test
      @Category(com.mycompany.SlowerTests.class)
      public void testSlower() {
        System.out.println("slower");
      }

      @Test
      @Category(com.cmycompany.FastTests.class)
      public void testSlow() {
        System.out.println("fast");
      }
    }
参考:
Junit的@Category详解

12. 如何debug TestCases


mvnDebug -DforkCount=0 test   dubug非fork的测试
在debug的需求时,还是使用Eclipse最方便

13. 使用系统属性    Using System Properties


    
      
        org.apache.maven.plugins
        maven-surefire-plugin
        2.17
        
          
            propertyValue
            ${project.build.directory}
            [...]
          
        
      
    
  

14. 选择surefire provider
surefire 默认会根据工程的classpath中已有的Junit|TestNG的版本来选择 test-framework provider,我们也可以手动的选择和覆盖当前的provider

    org.apache.maven.plugins
    maven-surefire-plugin
    2.17
    
      
        org.apache.maven.surefire
        surefire-junit47
        2.17
      
    
  
目前已经提供的provider有surefire-junit3, surefire-junit4, surefire-junit47 and surefire-testng
参考:http://mvnrepository.com/artifact/org.apache.maven.surefire
注意:选择手动指定provider时,不要忘记安装test framework
15. class Loading issues
please refer to:
http://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html


原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

1、别低估任何人。

——收敛自己的脾气,经常要保持沉默,因为冲动会做下让自己无法挽回的事情

你可能感兴趣的:(maven配置详解,开发环境与管理工具,软件测试-测试框架之Junit,项目管理与持续集成)