一、前言
在我们做自动化的时候,用例分类通常有冒烟测试和系统集成测试,或者是分环境的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
5、@RunWith+@SelectPackages+@IncludeTags