2

是否可以将 ParameterResolver 提供的参数注入(或以其他方式获取)扩展?

以下示例使用 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 扩展注入它。我正在寻找一种更通用的方法,该方法可以与使用参数解析器的其他扩展一起使用。

4

1 回答 1

0

经历了生命周期方法和扩展的当前实现后,我没有看到解决该问题的通用方法。Jupiter 的扩展机制需要一种访问其他扩展的方法——或者至少是注册的参数解析器。您可能想在https://github.com/junit-team/junit5创建一个问题并请求该功能。

于 2020-03-26T08:00:49.950 回答