是否可以将 ParameterResolver 提供的参数注入(inject)(或以其他方式获取)到扩展中?
以下示例使用 Spring 和 RestAssured,但我正在寻找更通用的解决方案:
在测试类中我可以做以下事情:
@BeforeEach
void setUpRestAssured(@LocalServerPort int port) {
RestAssured.port = port;
}
如果我想把它放到一个扩展中,我会实现 BeforeEachCallback
:
public class RestAssuredExtension implements BeforeEachCallback {
@Override
public void beforeEach(ExtensionContext context) throws Exception {
int port = ???
}
}
我知道我可以使用 @LocalServerPort
注释创建一个字段并使用 AnnotationSupport 获取它,但这只有效,因为 Spring 扩展注入(inject)了它。我正在寻找一种更通用的方法,该方法可以使用参数解析器与其他扩展一起使用。
最佳答案
在经历了生命周期方法和扩展的当前实现之后,我没有看到解决该问题的通用方法。 Jupiter 的扩展机制需要一种访问其他扩展的方法——或者至少是注册的参数解析器。您可能想在 https://github.com/junit-team/junit5 创建问题并请求该功能。
关于java - 如何将参数注入(inject) JUnit 5 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60844976/