如何使用 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 不足的地方!