JUnit5入门学习(五)

JUnit5入门学习(五)

本节主要笔记扩展模块的相关知识

What

JUnit5提供了一个扩展模型,它可以用来扩展JUnit的核心功能,本节重点看扩展模型的简单用法。分为定义和使用2个部分

定义

JUnit5定义了一组可扩展的接口

通过实现这些接口,从而获得扩展的能力。

Conditional Test Execution

ExecutionCondition接口用来扩展测试是否执行或者跳过

1
2
3
4
5
6
public class TestCondition implements ExecutionCondition {
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
return ConditionEvaluationResult.enabled("allowed");
}
}

Test Instance Factories

TestInstanceFactory接口的用法我也还不清楚怎么用,可能是没有掌握@TestFactory原因

Test Instance Post-processing

TestInstancePostProcessor接口用在执行测试方法之前做一些初始化的业务,执行顺序在BeforeEach 之前BeforeAll之后

Parameter Resolution

ParameterResolver用来在运行时解析方法参数

Test Result Processing

实现TestWatcher接口用来处理测试用例在各种结果下的业务处理,包括执行禁止,执行中断,执行成功或失败

Test Lifecycle Callbacks

用在测试用例执行的各个阶段的回掉

-w347

Before and After Test Execution Callbacks

用来在测试方法执行前后的回掉业务,文档中给出了一个记录测试用例执行时间的示例

Exception Handling

TestExecutionExceptionHandler接口用来处理测试过程中产生的异常

Providing Invocation Contexts for Test Templates

略过

Keeping State in Extensions

一个容器,用来记录测试过程中的需要暂存的数据

使用

使用就很简单了

1
2
3
4
5
@Test
@ExtendWith({ DatabaseExtension.class, WebServerExtension.class })
class MyFirstTests {
// ...
}

或者

1
2
3
4
5
6
@Test
@ExtendWith(DatabaseExtension.class)
@ExtendWith(WebServerExtension.class)
class MySecondTests {
// ...
}

总结

JUnit5提供了相当丰富的一组扩展用来满足一些特别的测试场景,感觉挺好用的样子。

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×