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

JUnit 5 How to get the instance of parent test form a nested test class

我正在实施 Mockito extension for JUnit 5。假设我们在一个嵌套测试中并且想要为父测试创建模拟 class.

class RootTest{
  @Mock Foo mock;

  @Nested
  class NestedTest{
    @Test
    public void foo(){
       mock.bar();
    }
  }
}

为此,我们需要 RootTest 的实例,以便将模拟分配给用 @Mock 注释的字段。 当前的问题是获取RootTestclass的实例。第一次尝试是通过 ExtensionContext.getParent()ExtensionContext.getTestInstance() 获取它,但测试实例是 null 用于父级。

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

无法通过 ExtensionContext 访问外部测试实例。但是,如果您让您的扩展实现 TestInstancePostProcessor,它将被调用用于外部和内部测试实例。其实就是设置实例变量(例子见我们的sample Mockito extension