我正在为 JUnit 5 实现一个 Mockito 扩展。假设我们处于嵌套测试中,并希望为父测试类创建模拟。
class RootTest{
@Mock Foo mock;
@Nested
class NestedTest{
@Test
public void foo(){
mock.bar();
}
}
}
为此,我们需要RootTest
的实例,以便将模拟分配给用 @Mock
注释的字段。当前的问题是获取RootTest
类的实例。第一次尝试是通过ExtensionContext.getParent()
和ExtensionContext.getTestInstance()
获取它,但测试实例是为父实例null
的。
问:如何获取嵌套类的父实例?反射可能会有所帮助,但不是一种选择,因为它依赖于编译器。
无法通过 ExtensionContext
访问外部测试实例。但是,如果让扩展实现 TestInstancePostProcessor
,则会为外部和内部测试实例调用它。事实上,它的目的是设置实例变量(有关示例,请参阅我们的示例 Mockito 扩展)。