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
注释的字段。
当前的问题是获取RootTest
class的实例。第一次尝试是通过 ExtensionContext.getParent()
和 ExtensionContext.getTestInstance()
获取它,但测试实例是 null
用于父级。
问:如何获取嵌套的父实例class?反射可能会有所帮助,但不是一种选择,因为它依赖于编译器。
无法通过 ExtensionContext
访问外部测试实例。但是,如果您让您的扩展实现 TestInstancePostProcessor
,它将被调用用于外部和内部测试实例。其实就是设置实例变量(例子见我们的sample Mockito extension)
我正在实施 Mockito extension for JUnit 5。假设我们在一个嵌套测试中并且想要为父测试创建模拟 class.
class RootTest{
@Mock Foo mock;
@Nested
class NestedTest{
@Test
public void foo(){
mock.bar();
}
}
}
为此,我们需要 RootTest
的实例,以便将模拟分配给用 @Mock
注释的字段。
当前的问题是获取RootTest
class的实例。第一次尝试是通过 ExtensionContext.getParent()
和 ExtensionContext.getTestInstance()
获取它,但测试实例是 null
用于父级。
问:如何获取嵌套的父实例class?反射可能会有所帮助,但不是一种选择,因为它依赖于编译器。
无法通过 ExtensionContext
访问外部测试实例。但是,如果您让您的扩展实现 TestInstancePostProcessor
,它将被调用用于外部和内部测试实例。其实就是设置实例变量(例子见我们的sample Mockito extension)