Java 如何使用Mockito将mock注入抽象父类中的@Autowired字段
我正在为一个具有抽象超类的类编写一个单元测试,ChildClass中的一个函数正在基类的对象上调用一个方法Java 如何使用Mockito将mock注入抽象父类中的@Autowired字段,java,mockito,superclass,Java,Mockito,Superclass,我正在为一个具有抽象超类的类编写一个单元测试,ChildClass中的一个函数正在基类的对象上调用一个方法 ChildClass看起来像这样 public class ChildClass extends ParentClass { public void functionA(){ objectFromParentClass.functionB(); } } 父类 public abstract class ParentClass { @Autowire
ChildClass
看起来像这样
public class ChildClass extends ParentClass {
public void functionA(){
objectFromParentClass.functionB();
}
}
父类
public abstract class ParentClass {
@Autowired
protected typeFromParentClass objectFromParentClass;
public void someFunction() {}
}
因为父类是抽象的@InjectMocks
,ReflectionTestUtils()不起作用。有没有办法用Mockito将mock的objectFromParentClass
注入到ParentClass
中
编辑:子类和父类都不是我写的,我只是在测试它。
ReflectionTestUtils.setField()
在这种情况下有效。
下面是我们为解决这个问题而编写的Junit5扩展。本质上,它获取对象的映射,并将它们注入到被测试类的字段中。非常适合InjectMock不足的地方 在父类中创建一个getter/setter,并在测试类中添加注释Spy(使getter返回一个mock)+mock