0
点赞
收藏
分享

微信扫一扫

Junit5使用过程的几点摘录

夏侯居坤叶叔尘 2021-09-21 阅读 65

基本组件

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

TestRunner的实现类

TestListener:监听测试过程及结果

Junit测试报告

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

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

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

测试类实例 后处理

接口及说明

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

@ParameterizedTest

@TestInstance

具体参见 junit5官网

举报

相关推荐

0 条评论