我想知道如何通过测试配置扩展。
场景:测试提供了一个应该在扩展中使用的值。
当前解决方案:该值被定义为测试中的字段,并由扩展通过扫描所有声明的字段并选择正确的字段(反射)来使用。
问题:这个解决方案是非常间接的。使用此扩展的人必须了解扩展内部并声明正确的字段(类型和值)。错误可以引导开发人员走向正确的方向,但尝试/错误会有点痛苦。
有没有办法使用例如带有值的注释来配置junit5扩展?
我想知道如何通过测试配置扩展。
场景:测试提供了一个应该在扩展中使用的值。
当前解决方案:该值被定义为测试中的字段,并由扩展通过扫描所有声明的字段并选择正确的字段(反射)来使用。
问题:这个解决方案是非常间接的。使用此扩展的人必须了解扩展内部并声明正确的字段(类型和值)。错误可以引导开发人员走向正确的方向,但尝试/错误会有点痛苦。
有没有办法使用例如带有值的注释来配置junit5扩展?
您可以提供配置参数并在运行时通过ExtensionContext访问它们,或者从 5.1 开始,有一种编程方式可以通过@RegisterExtension注册自定义扩展实例。
从 JUnit 5 用户指南复制的示例:
@RegisterExtension
static WebServerExtension server = WebServerExtension.builder()
.enableSecurity(false)
.build();
@Test
void getProductList() {
WebClient webClient = new WebClient();
String serverUrl = server.getServerUrl();
// Use WebClient to connect to web server using serverUrl and verify response
assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}