我正在实施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
。
问:如何获取嵌套类的父实例?反射可能有所帮助,但不是一种选择,因为它依赖于编译器。
答案 0 :(得分:4)
无法通过ExtensionContext
访问外部测试实例。但是,如果您让扩展实现TestInstancePostProcessor
,则将为外部和内部测试实例调用它。实际上,它意味着设置实例变量(例如,参见我们的sample Mockito extension)。