`
xinklabi
  • 浏览: 1560626 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.   <groupId>org.apache.maven.plugins</groupId>  
  3.   <artifactId>maven-surefire-plugin</artifactId>  
  4.   <version>2.17</version>  
  5. </plugin>  

 

2. 默认被执行的测试
   
   默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例。
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. "**/Test*.java" - includes all of its subdirectories and all java filenames that start with "Test".  
  2. "**/*Test.java" - includes all of its subdirectories and all java filenames that end with "Test".  
  3. "**/*TestCase.java" - includes all of its subdirectories and all java filenames that end with "TestCase".</span>  
3. 跳过测试   Skipping Tests
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <build>  
  2.     <plugins>  
  3.       <plugin>  
  4.         <groupId>org.apache.maven.plugins</groupId>  
  5.         <artifactId>maven-surefire-plugin</artifactId>  
  6.         <version>2.17</version>  
  7.        <span style="color:#009900;"> <configuration>  
  8.           <skipTests>true</skipTests>  
  9.         </configuration></span>  
  10.       </plugin>  
  11.     </plugins>  
  12.   </build>  
  13.   
  14. 补充:如果使用Junit或者TestNG也可以直接在当前测试方法上加注解@Ignore忽略,这是加了该注解的也都会被skip  
4. 排除测试 Exclusions  (Junit & TestNG 通用)
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <build>  
  2.     <plugins>  
  3.       <plugin>  
  4.         <groupId>org.apache.maven.plugins</groupId>  
  5.         <artifactId>maven-surefire-plugin</artifactId>  
  6.         <version>2.17</version>  
  7.         <configuration>  
  8.          <span style="color:#009900;"> <excludes>  
  9.             <exclude>**/TestCircle.java</exclude>  
  10.             <exclude>**/TestSquare.java</exclude>  
  11.           </excludes></span>  
  12.         </configuration>  
  13.       </plugin>  
  14.     </plugins>  
  15.   </build>  

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    如果测试类没有使用规范的命名,可以显示的直接指定测试方法的名称

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. Running a set of methods in a Single Test Class  
  2.   
  3. With version 2.7.3, you can run only n tests in a single Test Class.  
  4.  NOTE : it's supported for junit 4.x and TestNG.   
  5. You must use the following syntax  
  6. mvn -Dtest=TestCircle#mytest test  
  7. You can use patterns too  
  8. mvn -Dtest=TestCircle#test* test  
  9. As of surefire 2.12.1, you can select multiple methods (JUnit4X only at this time, patches welcome)  
  10. mvn -Dtest=TestCircle#testOne+testTwo test  


6. 如何使用TestNG

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <dependency>  
  2.       <groupId>org.testng</groupId>  
  3.       <artifactId>testng</artifactId>  
  4.       <version>6.3.1</version>  
  5.       <scope>test</scope>  
  6.     </dependency>  
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. If  using an older version of TestNG (<= 5.11)  
  2.     <dependency>  
  3.       <groupId>org.testng</groupId>  
  4.       <artifactId>testng</artifactId>  
  5.       <version>5.11</version>  
  6.       <scope>test</scope>  
  7.      <span style="color:#009900;"> <classifier>jdk15</classifier></span>  
  8.     </dependency>  

 

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

7. 如何使用TestNG的 suite

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.         <groupId>org.apache.maven.plugins</groupId>  
  3.         <artifactId>maven-surefire-plugin</artifactId>  
  4.         <version>2.17</version>  
  5.         <configuration>  
  6.           <span style="color:#009900;"><suiteXmlFiles>  
  7.                 <suiteXmlFile>testng.xml</suiteXmlFile>  
  8.             </suiteXmlFiles></span>  
  9.         </configuration>  
  10.       </plugin>  

注意: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 通用)

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.        <groupId>org.apache.maven.plugins</groupId>  
  3.        <artifactId>maven-surefire-plugin</artifactId>  
  4.        <version>2.17</version>  
  5.        <configuration>  
  6.         <span style="color:#009900;"> <groups>functest,perftest</groups></span>  
  7.        </configuration>  
  8.      </plugin>  


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

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.         <groupId>org.apache.maven.plugins</groupId>  
  3.         <artifactId>maven-surefire-plugin</artifactId>  
  4.         <version>2.17</version>  
  5.         <configuration>  
  6.           <span style="color:#009900;"><parallel>methods</parallel>  
  7.           <threadCount>10</threadCount></span>  
  8.         </configuration>  
  9.       </plugin>  


10. 如何使用Junit  Using JUnit

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <dependency>  
  2.       <groupId>junit</groupId>  
  3.       <artifactId>junit</artifactId>  
  4.       <version>4.8.1</version>  
  5.       <scope>test</scope>  
  6.     </dependency>  

11. 如何使用Junit Category    Using JUnit Categories

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.       <artifactId>maven-surefire-plugin</artifactId>  
  3.       <version>2.11</version>  
  4.       <configuration>  
  5.        <span style="color:#009900;"> <strong><groups>com.mycompany.SlowTests</groups></strong></span>  
  6.       </configuration>  
  7.     </plugin>  

 

 

仅有带该注解的测试 或者 是当前注解 类/接口的 子类 会被执行,
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:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public interface SlowTests{}  
  2. public interface SlowerTests extends SlowTests{}  
  3. ------------------------------------------------------------------------------------------------  
  4. ic class AppTest {  
  5.   @Test  
  6.   @Category(com.mycompany.SlowTests.class)  
  7.   public void testSlow() {  
  8.     System.out.println("slow");  
  9.   }  
  10.   
  11.   @Test  
  12.   @Category(com.mycompany.SlowerTests.class)  
  13.   public void testSlower() {  
  14.     System.out.println("slower");  
  15.   }  
  16.   
  17.   @Test  
  18.   @Category(com.cmycompany.FastTests.class)  
  19.   public void testSlow() {  
  20.     System.out.println("fast");  
  21.   }  
  22. }  

参考:

Junit的@Category详解

 

 

12. 如何debug TestCases

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. mvnDebug -DforkCount=0 test   dubug非fork的测试  
  2. 在debug的需求时,还是使用Eclipse最方便  


13. 使用系统属性    Using System Properties

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <build>  
  2.     <plugins>  
  3.       <plugin>  
  4.         <groupId>org.apache.maven.plugins</groupId>  
  5.         <artifactId>maven-surefire-plugin</artifactId>  
  6.         <version>2.17</version>  
  7.         <configuration>  
  8.           <span style="color:#009900;"><systemPropertyVariables>  
  9.             <propertyName>propertyValue</propertyName>  
  10.             <buildDirectory>${project.build.directory}</buildDirectory>  
  11.             [...]  
  12.           </systemPropertyVariables></span>  
  13.         </configuration>  
  14.       </plugin>  
  15.     </plugins>  
  16.   </build>  

 

 

14. 选择surefire provider
surefire 默认会根据工程的classpath中已有的Junit|TestNG的版本来选择 test-framework provider,我们也可以手动的选择和覆盖当前的provider
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <plugin>  
  2.     <groupId>org.apache.maven.plugins</groupId>  
  3.     <artifactId>maven-surefire-plugin</artifactId>  
  4.     <version>2.17</version>  
  5.     <dependencies>  
  6.       <dependency>  
  7.         <groupId>org.apache.maven.surefire</groupId>  
  8.        <span style="color:#009900;"> <artifactId>surefire-junit47</artifactId></span>  
  9.         <version>2.17</version>  
  10.       </dependency>  
  11.     </dependencies>  
  12.   </plugin>  
目前已经提供的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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics