一、前言
在我们做自动化的时候,用例分类通常有冒烟测试用例和回归测试用例,或者是分环境的sit、uat和线上环境。那么我们怎么来实现此功能呢,junit5提供了一个比较好的解决方案。
二、pom文件依赖导入
<dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.6.2</version> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-runner</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <version>5.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <version>5.6.2</version> <scope>test</scope> </dependency> </dependencies>
三、相关注解
注解 | 作用 |
@RunWith(JUnitPlatform.class) | 执行套件 |
@SelectPackages({"packageA","packageB"}) | 创建测试套件 |
@SelectClasses({a.class,b.class,c.class}) | 创建测试套件 |
@IncludePackages("PackageName") | 过滤需要执行的测试包 |
@ExcludePackages("PackageName") | 过滤不需要执行的测试包 |
@IncludeClassNamePatterns | 过滤需要执行的测试类 |
@ExcludeClassNamePatterns | 过滤不需要执行的测试类 |
@IncludeTags("sit") | 过滤需要执行的测试方法 |
@ExcludeTags("prod") | 过滤不需要执行的测试方法 |
四、案例演示
1、@RunWith+@SelectPackages
说明:利用 @RunWith+@SelectPackages 将包中测试类依次运行
有两个测试包,tecacasedemo和testcasedemo1,里面的测试类分别是TestJunit5Demo和TestJunit5Demo1,两个测试类的内容是一样的
测试类:
package testcasedemo; import org.junit.jupiter.api.*; public class TestJunit5Demo { @Test void fun(){ System.out.println("fun"); } }
此外还有套件包和套件类,suit为套件包,TestRunWithDemo为套件类
套件类:
package suit; import org.junit.platform.runner.JUnitPlatform; import org.junit.platform.suite.api.SelectPackages; import org.junit.runner.RunWith; @RunWith(JUnitPlatform.class) @SelectPackages({ "testcasedemo", "testcasedemo1" }) public class TestRunWithDemo { }
测试结果:
2、@RunWith+@SelectPackages+@IncludePackages
说明:@RunWith+@SelectPackages+@IncludePackages配合使用过滤出需要执行的测试包testcasedemo1.demo1
套件类:
测试结果:
3、@RunWith+@SelectPackages+@ExcludePackages
说明:@RunWith+@SelectPackages+@ExcludePackages配合使用过滤出不需要执行的测试包testcasedemo1.demo1
套件类:
测试结果:
4、@RunWith+@SelectPackages+@IncludeClassNamePatterns
说明:将 testcasedemo 包下的 TestJunit5Demo 和 testcasedemo1.demo1所有测试类过滤出来并执行
套件类:
测试结果:
5、@RunWith+@SelectPackages+@IncludeTags
说明:过滤出包下的所有包含Tag的测试方法
操作:在testcasedemo1.demo1.TestDemo1的方法testDemo1上加上注解@Tag
套件类:
测试结果:
参考文档: