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

时间:2017-10-30 11:54:43

标签: java mockito junit5

我正在实施Mockito extension for JUnit 5。假设我们处于嵌套测试中并希望为父测试类创建模拟。

class RootTest{
  @Mock Foo mock;

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

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

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

1 个答案:

答案 0 :(得分:4)

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