如何使用 Mockito 将模拟注入抽象 parent class 中的 @Autowired 字段
How to inject mock into @Autowired field in an abstract parent class with Mockito
我正在为具有抽象超级 class 的 class 编写单元测试,并且 ChildClass 中的一个函数正在调用一个object 形式 BaseClass.
上的方法
ChildClass
看起来像这样。
public class ChildClass extends ParentClass {
public void functionA(){
objectFromParentClass.functionB();
}
}
parent class
public abstract class ParentClass {
@Autowired
protected typeFromParentClass objectFromParentClass;
public void someFunction() {}
}
因为 parent class 是抽象的 @InjectMocks
并且 ReflectionTestUtils() 不起作用。有没有办法用 Mockito 将模拟的 objectFromParentClass
注入 ParentClass
?
编辑:Child 和 Parent class 都不是我写的,我只是在测试它。
ReflectionTestUtils.setField()
在这种情况下确实有效
https://github.com/exabrial/mockito-object-injection
这是我们为解决这个确切问题而编写的 Junit5 扩展。本质上,它需要一个对象映射并将它们注入到被测 class 的字段中。非常适合 InjectMocks 不足的地方!
我正在为具有抽象超级 class 的 class 编写单元测试,并且 ChildClass 中的一个函数正在调用一个object 形式 BaseClass.
上的方法ChildClass
看起来像这样。
public class ChildClass extends ParentClass {
public void functionA(){
objectFromParentClass.functionB();
}
}
parent class
public abstract class ParentClass {
@Autowired
protected typeFromParentClass objectFromParentClass;
public void someFunction() {}
}
因为 parent class 是抽象的 @InjectMocks
并且 ReflectionTestUtils() 不起作用。有没有办法用 Mockito 将模拟的 objectFromParentClass
注入 ParentClass
?
编辑:Child 和 Parent class 都不是我写的,我只是在测试它。
ReflectionTestUtils.setField()
在这种情况下确实有效
https://github.com/exabrial/mockito-object-injection
这是我们为解决这个确切问题而编写的 Junit5 扩展。本质上,它需要一个对象映射并将它们注入到被测 class 的字段中。非常适合 InjectMocks 不足的地方!