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
…
包名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