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

    xiaoxiao2021-03-25  79

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

    [html] view plain copy <plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-surefire-plugin</artifactId>    <version>2.17</version>  </plugin>   2. 默认被执行的测试    默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例。 [html] view plain copy "**/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".</span>   3. 跳过测试   Skipping Tests [html] view plain copy <build>      <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.17</version>         <span style="color:#009900;"> <configuration>            <skipTests>true</skipTests>          </configuration></span>        </plugin>      </plugins>    </build>    补充:如果使用Junit或者TestNG也可以直接在当前测试方法上加注解@Ignore忽略,这是加了该注解的也都会被skip   4. 排除测试 Exclusions (Junit & TestNG 通用) [html] view plain copy <build>      <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.17</version>          <configuration>           <span style="color:#009900;"> <excludes>              <exclude>**/TestCircle.java</exclude>              <exclude>**/TestSquare.java</exclude>            </excludes></span>          </configuration>        </plugin>      </plugins>    </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 plain copy 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

    [html] view plain copy <dependency>        <groupId>org.testng</groupId>        <artifactId>testng</artifactId>        <version>6.3.1</version>        <scope>test</scope>      </dependency>   [html] view plain copy If  using an older version of TestNG (<= 5.11)      <dependency>        <groupId>org.testng</groupId>        <artifactId>testng</artifactId>        <version>5.11</version>        <scope>test</scope>       <span style="color:#009900;"> <classifier>jdk15</classifier></span>      </dependency>   默认会执行的测试用例*Test.java 7. 如何使用TestNG的   suite [html] view plain copy <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.17</version>          <configuration>            <span style="color:#009900;"><suiteXmlFiles>                  <suiteXmlFile>testng.xml</suiteXmlFile>              </suiteXmlFiles></span>          </configuration>        </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 plain copy <plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-surefire-plugin</artifactId>         <version>2.17</version>         <configuration>          <span style="color:#009900;"> <groups>functest,perftest</groups></span>         </configuration>       </plugin>   9. 多线程的运行测试用例 Running tests in parallel (Junit & TestNG 通用)

    [html] view plain copy <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.17</version>          <configuration>            <span style="color:#009900;"><parallel>methods</parallel>            <threadCount>10</threadCount></span>          </configuration>        </plugin>   10. 如何使用Junit  Using JUnit

    [html] view plain copy <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.8.1</version>        <scope>test</scope>      </dependency>   11. 如何使用Junit Category    Using JUnit Categories

    [html] view plain copy <plugin>        <artifactId>maven-surefire-plugin</artifactId>        <version>2.11</version>        <configuration>         <span style="color:#009900;"> <strong><groups>com.mycompany.SlowTests</groups></strong></span>        </configuration>      </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 plain copy public interface SlowTests{}  public interface SlowerTests extends SlowTests{}  ------------------------------------------------------------------------------------------------  ic 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

    [html] view plain copy mvnDebug -DforkCount=0 test   dubug非fork的测试  在debug的需求时,还是使用Eclipse最方便   13. 使用系统属性    Using System Properties

    [html] view plain copy <build>      <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.17</version>          <configuration>            <span style="color:#009900;"><systemPropertyVariables>              <propertyName>propertyValue</propertyName>              <buildDirectory>${project.build.directory}</buildDirectory>              [...]            </systemPropertyVariables></span>          </configuration>        </plugin>      </plugins>    </build>   14. 选择surefire provider surefire 默认会根据工程的classpath中已有的Junit|TestNG的版本来选择 test-framework provider,我们也可以手动的选择和覆盖当前的provider [html] view plain copy <plugin>      <groupId>org.apache.maven.plugins</groupId>      <artifactId>maven-surefire-plugin</artifactId>      <version>2.17</version>      <dependencies>        <dependency>          <groupId>org.apache.maven.surefire</groupId>         <span style="color:#009900;"> <artifactId>surefire-junit47</artifactId></span>          <version>2.17</version>        </dependency>      </dependencies>    </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
    转载请注明原文地址: https://ju.6miu.com/read-7376.html

    最新回复(0)