是否可以使用@RegisterExtension以编程方式向@TestTemplate测试添加Junit 5扩展?

e4yzc0pl  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(125)

使用Junit版本5.9.2,我尝试以编程方式为带有@TestTemplate注解的测试类构造函数添加参数解析器扩展。
我尝试使用@RegisterExtension以编程方式添加扩展。
示例:

public class MyTestClass {

  @RegisterExtension
  static final TestDependencyResolver resolverExt = new TestDependencyResolver(/*...*/);
  
  private final TestDependency dependency;

  public MyTestClass(TestDependency dependency) {
    this.dependency = dependency;
  }

  @TestTemplate
  @ExtendWith(SomeContextProvider.class)
  void test() {
    //...
  }
}

我试过:
1.使resolverExt字段非static
1.将@ExtendWith(SomeContextProvider.class)移至类级别
以及1和2的其它可能组合。
在所有情况下,没有注入ctor参数dependency,也没有调用TestDependencyResolver::resolveParameter,据我所知,这意味着对象是在没有注册TestDependencyResolver/之前创建的,如果我错了,请纠正我。
我想达到的目标是可能的吗?谢谢。

o2g1uqev

o2g1uqev1#

原来问题不是Junit5,而是我正在使用的TestTemplateInvocationContextProvider
我使用了PactVerificationInvocationContextProvider,它似乎有一个错误,并抛出NullPointerException时,解决Ctor参数,我已经打开了一个issue,如果你想了解更多细节。

相关问题