我正在为一个有抽象超类的类写一个单元测试,ChildClass中的一个函数正在调用BaseClass中一个对象的方法。
ChildClass
看起来像这样。
public class ChildClass extends ParentClass {
public void functionA(){
objectFromParentClass.functionB();
}
}
父类
public abstract class ParentClass {
@Autowired
protected typeFromParentClass objectFromParentClass;
public void someFunction() {}
}
由于父类是抽象的 @InjectMocks
和 ReflectionTestUtils() 不起作用。有什么办法可以注入一个模拟的 objectFromParentClass
进入 ParentClass
与Mockito?
编辑:子类和父类都不是我写的,我只是在测试。
ReflectionTestUtils.setField()
在这种情况下,它是可行的
https:/github.comexabrialmockito-object-injection。
这是我们写的一个Junit5扩展来解决这个问题。本质上,它需要一个对象的映射,并将它们注入到被测试类的字段中。完美地解决了InjectMocks的不足之处。