Java JUnit 5如何从嵌套测试类中获取父测试实例

Java JUnit 5如何从嵌套测试类中获取父测试实例,java,mockito,junit5,Java,Mockito,Junit5,我正在实施一项计划。假设我们在嵌套测试中,并且希望为父测试类创建模拟 class RootTest{ @Mock Foo mock; @Nested class NestedTest{ @Test public void foo(){ mock.bar(); } } } 为此,我们需要RootTest的实例,以便将Mock分配给用@Mock注释的字段。 当前的问题是获取RootTest类的实例。第一次尝试是通过ExtensionConte

我正在实施一项计划。假设我们在嵌套测试中,并且希望为父测试类创建模拟

class RootTest{
  @Mock Foo mock;

  @Nested
  class NestedTest{
    @Test
    public void foo(){
       mock.bar();
    }
  }
}
为此,我们需要
RootTest
的实例,以便将Mock分配给用
@Mock
注释的字段。 当前的问题是获取
RootTest
类的实例。第一次尝试是通过
ExtensionContext.getParent()
ExtensionContext.getTestInstance()
获取它,但是父级的测试实例是
null


问:如何获取嵌套类的父实例?反射可能有帮助,但不是一个选项,因为它依赖于编译器。

外部测试实例无法通过
ExtensionContext
访问。但是,如果让扩展实现
TestInstancePostProcessor
,则将为外部和内部测试实例调用它。实际上,它是用来设置实例变量的(请参见我们的示例)。

它可以工作!代码现在更复杂了,因为我仍然需要在每次回调之前实现
beforeachcallback
,以处理额外的注释来定义mockito严格性。在将来的版本中,
getTestInstance()
是否有可能返回父级
ExtensionContext
的测试实例?
ExtensionContext
的父级表示示例中的嵌套测试类,并且只有在使用
Lifecycle.PER\u class
时才会设置测试实例。但是,在这种情况下,它将包含嵌套类的一个实例,这不是您所需要的。我们可以向
ExtensionContext
添加另一个方法,以获取所有封闭实例,或给定类文本的封闭实例。你能为它创建一个GitHub问题,这样我们就可以继续讨论了吗?