jck28-lucio-junit5测试用例调度与运行

maven-surefire-plugin

  • maven 对应有默认配置
  • 当需要修改一些测试相关执行策略的时候,就需要重新配置这个插件

pom.xml

对应依赖导入

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>8</java.version>
<maven.compiler.version>3.8.1</maven.compiler.version>

    <maven.surefire.version>2.22.0</maven.surefire.version>
    <aspectj.version>1.9.5</aspectj.version>
</properties>
org.junit.jupiter junit-jupiter 5.8.2 org.junit.platform junit-platform-runner 1.8.2 org.junit.platform junit-platform-launcher 1.8.2 org.junit.platform junit-platform-console-standalone 1.8.2 org.junit.platform junit-platform-suite 1.8.2 test
<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
  <groupId>org.junit.vintage</groupId>
  <artifactId>junit-vintage-engine</artifactId>
  <version>5.8.2</version>
</dependency>

         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <!--<version>3.0.0-M5</version>-->
                <configuration>
                    <!--					执行mvn test,不要配置includes-->
                    <includes>
                        <include>**/*One.java</include>
                        <!--<include>%regex[.*(ThreeTest|TestFour).*]</include>-->
                        <!--<include>com/junit5/case01/OneTest</include>-->
                        <!--<include>com/junit5/case01/OneTest.java</include>-->
                        <!--<include>com/junit5/case01/OneTest.class</include>-->
                        <!--<include>com.junit5.case01.TwoTest</include>-->
                    </includes>
                    <excludes>
                        <exclude>%regex[.*(One|Two)Test.*]</exclude>
                    </excludes>
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.junit.jupiter</groupId>
                        <artifactId>junit-jupiter-engine</artifactId>
                        <version>5.8.2</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.7.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>

mvn执行测试用例

  • 命令行执行
  • 配置文件执行

执行所有测试

  • 命令行执行
  • 执行当前项目下的所有测试
    mvn clean test

执行单个测试类

命令行执行
mvn test -Dtest=包名.类名

mvn clean test -Dtest=com.junit5.case02.TwoTest

执行单个测试类

  • 配置文件执行
  • 包名之间用/区分
  • 对应有3种方式,用哪种都可以

包名/类名.java

包名/类名

包名/类名.class

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <!--<version>3.0.0-M5</version>-->
                <configuration>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.junit.jupiter</groupId>
                        <artifactId>junit-jupiter-engine</artifactId>
                        <version>5.8.2</version>
                    </dependency>
                </dependencies>
            </plugin>

出现问题,maven-surefire-plugin2.22.0版本的includes无效,mvn clean test一直执行所有的用例

原因:
多配置了一套maven-surefire-plugin2.21.0版本的插件

解决办法:
删除maven-surefire-plugin2.21.0版本的插件
即可

出现问题,maven-surefire-plugin3.0.0-M5结合mvn clean test执行所有测试无效

执行单个测试方法

命令行执行
mvn test -Dtest=包名.类名#方法名

mvn clean test -Dtest=com.junit5.case02.T
woTest#case02TwoTest02

执行多个测试类

  • 执行同一个包下的测试类
    mvn clean test -Dtest=com.junit5.case02.TwoTest,com.junit5.case02.OneTest

  • 执行不同包下的测试类
    mvn clean test -Dtest=com.junit5.case01.TwoTest,com.junit5.case02.OneTest

  • 正则匹配模式执行多个测试类

  • 配置不被执行的测试类

执行同一个包下的测试类

命令行执行
mvn test -Dtest=包名.类名1,包名.类名2,…
mvn clean test -Dtest=com.junit5.case02.TwoTest,com.junit5.case02.OneTest

执行同一个包下的测试类

配置文件执行

包名1/*.java

com/junit5/case01/*.java

包名1/

com/junit5/case01/

包名1/.class

com/junit5/case01/
.class

执行不同包下的测试类

  • 命令行执行
  • 多个测试类间用英文逗号连接
    mvn test -Dtest=包名1.类名1,包名2.类名2,…
    mvn clean test -Dtest=com.junit5.case01.OneTest,com.junit5.case02.OneTest

执行不同包下的测试类

配置文件执行

包名1/类名1.java
包名2/类名2.java

com/junit5/case01/OneTest.java
com/junit5/case02/OneTest.java

包名1/类名1
包名2/类名2

com/junit5/case01/OneTest com/junit5/case02/OneTest

包名1/类名1.class
包名2/类名2.class


com/junit5/case01/OneTest.class
com/junit5/case02/OneTest.class

正则匹配执行多个测试类

命令行执行
mvn test -Dtest=“包名.*Test”

mvn clean test -Dtest=“com.junit5.case02.*Test”

正则匹配执行多个测试类

配置文件执行
包名/*Test

包名/*Test.java

包名/*Test.class

com/junit5/case02/*Test
com/junit5/case02/*Test.java
com/junit5/case02/*Test.class

配置不被执行的测试类

  • 配置文件执行
    包名/*Test.class

SuiteTest

com/junit5/testcase/* com/junit5/testcase/*Test

执行多个测试方法

命令行执行
mvn test -Dtest=包名.类名#方法名1+方法名2

mvn clean test -Dtest=com.junit5.case02.TestFour#testFour01+testFour02