Junit5使用过程的几点摘录

基本组件

TestCase:测试用例实例
TestSuite:套件执行测试用例
TestRunner:继承了BaseTestRunner,该类实现了TestListener

TestRunner的实现类

org.junit.runners.JUnit4:Junit4的测试运行器

org.junit.runners.Parameterized:使用不同参数来运行相同测试集的运行器

org.junit.runners.Suite:包含不同测试的容器

TestListener:监听测试过程及结果

addError

addFailure

endTest

startTest

Junit测试报告

明确测试报告模板及需要收集到的测试数据信息

工程中的template文件

写模板的代码基本固定

ReportInfo类定义了报告要收集的具体信息

自定义Runner:ReportRunner.java,继承BlockJUnit4ClassRunner重写run方法,run方法接受RunNotifier作为入参,并添加自定义监听器JunitExecutionListener;
自定义Listener:JUnitExecutionListener.java继承RunListener,重写其中的相关方法进行不同测试过程、结果的统计;
测试类添加Runwith注解@RunWith(ReportRunner.class)

(备注:工程根目录下:template为报告模板文件,运行TestReport测试类后得到的report.html,在JUnitExecutionListener的testRunFinished中通过邮件发送)

测试类实例 后处理

BeforeAll 回调

测试及容器执行条件检查

BeforeEach 回调

参数解析

测试执行前

测试执行后

异常处理

AfterEach 回调

AfterAll 回调

接口及说明

AfterAllCallback

定义 API 扩展,希望在调用所有测试后让测试容器执行额外的行为

AfterEachCallback

定义 API 扩展,希望在调用每个测试方法后让测试执行额外的行

AfterTestExecutionCallback

定义 API 扩展,希望在执行每个测试后让测试立即执行额外的行为

BeforeAllCallback 

定义 API 扩展,希望在调用所有测试前让测试容器执行额外的行为

BeforeEachCallback

定义 API 扩展,希望在调用每个测试前让测试执行额外的行为

BeforeTestExecutionCallback 

定义 API 扩展,希望在执行每个测试前让测试立即执行额外的行为

ParameterResolver

定义 API 扩展,希望在运行时动态解析参数

TestExecutionExceptionHandler

定义 API 扩展,希望处理在测试执行期间抛出的异常

扩展点的影响范围 - 类级别或方法级别
在MyExtension类中需要实现Extension接口
@ExtendWith(MyExtension.class) 完成注册

测试结果相关扩展:@ExtendWith({ ReportAnnotationParameterResolver.class,AuditServiceParameterResolver.class,EnvironmentNameParameterResolver.class })

supportsParameter总是返回true会影响其他Extensions的使用导致断言错误

注解

在编程的时候注意静态及非静态Field的差异
静态Field
类级别ExtendWith注解扩展注册后,实现类或者实例级别扩展API,如:BeforeAllCallback, AfterAllCallback, and TestInstancePostProcessor;方法级别:BeforeEachCallback
非静态Field
方法级别ExtendWith注解扩展注册后,测试类带配置@TestInstance(Lifecycle.PER_CLASS) 方法级别ExtendWith注解扩展注册前注册

组合多个注解特性的能力:通过自定义注解方式将组合的多个注解重新生成新注解

示例如下:
public @interface 注解名 (该注解名上面的多个注解)

实例:
@Nested

不能与@MethodSource注解一起使用

嵌套单元测试

任意嵌套内部类

将测试限制在同一个类中

@ParameterizedTest

各类型source

Consuming Arguments

@TestInstance

配置测试实例生命周期,参看TestDefaultMethod

具体参见 junit5官网

你可能感兴趣的:(Junit5使用过程的几点摘录)