Java 为什么模拟类不进入非模拟函数?

Java 为什么模拟类不进入非模拟函数?,java,unit-testing,spring-boot,mockito,Java,Unit Testing,Spring Boot,Mockito,我有一门课: @Component public class GCInitializer { @Autowired GCGoodRepository gcGoodRepository; @PostConstruct public void onStartup() throws Exception { // load/update base data initGCBaseData(); } private

我有一门课:

@Component
public class GCInitializer
{
    @Autowired
    GCGoodRepository gcGoodRepository;

    @PostConstruct
    public void onStartup() throws Exception
    {
        // load/update base data
        initGCBaseData();
    }

    private void initGCBaseData() throws Exception 
    {
        ArrayList<GCGood> dbGoods;
        ArrayList<GCGood> fileGoods;
        ArrayList<GCGood> baseGoods;

        dbGoods = getGCGoodsFromDB();
        fileGoods = getGoodsFromFile();
        baseGoods = getGoodsFromInitializer();

        // do my merge magic
        […]
    }

    private ArrayList<GCGood> getGoodsFromInitializer() {
        ArrayList<GCGood> baseGoods = new ArrayList<>();
        […]
    }
    […]
}
使用调试器运行函数GCInitializer::getGoodsFromInitializer时,永远不会输入并返回null,而不是带有7个GCGoods的数组


为什么会这样?如何实现此函数返回正确的ArrayList?

它是一个模拟函数,因此没有实现真正的方法。你可能想用间谍来代替。

我同意备忘录,但如果你想这样做,你可以使用真实的部分模拟,例如:

when(mock.someMethod()).thenCallRealMethod();
when(mock.someMethod()).thenCallRealMethod();