0

文档中@RegisterExtension提到了有关实例注入的一些内容:

扩展将在测试类被实例化后注册,并且在所有 TestInstancePostProcessors 都有机会对测试实例进行后处理(可能将要使用的扩展实例注入到带注释的字段中)。

JUnit 中是否有任何后处理器可以自动为扩展执行此操作,或者这只是在谈论人们将来可能构建的东西?

在我们的案例中,我发现我们的许多扩展都是这样的:

    @RegisterExtension
    public final TempFolderExtension temp = new TempFolderExtension();

    @RegisterExtension
    public final SomeFactoryExtension factory = new SomeFactoryExtension(temp);

像 PicoContainer 这样的容器可以自动找出如何构造实例。

如果我们能写出来,那就太好了,

    @RegisterExtension
    public TempFolderExtension temp;

    @RegisterExtension
    public SomeFactoryExtension factory;

注释处理器或运行时注入器都可以填充其余部分。

这种扩展之间的依赖关系也对它们应该运行的顺序产生影响。

4

1 回答 1

0

简短回答:不,这是不可能的,使用时@RegisterExtension您必须手动构建扩展实例。

阅读https://junit.org/junit5/docs/current/user-guide/#extensions 5.2.2

于 2021-08-18T00:13:57.370 回答