首页 > 解决方案 > 创建对象时的 Mockito 来自其他类的私有方法

问题描述

我有一个问题,如下所示,在我的测试代码中,我想测试 A 类的“needTest”函数。但是,needTest 函数在其私有方法中创建了一个 db 连接器,然后使用该连接器连接 DB。

我想模拟 createObjB 但它是一个私有函数。我想模拟连接器的 connectDB,但该对象是在需要测试中创建的,这似乎我无法干预。

所以我的问题是,我必须公开 createObjB 吗?

package AProblem;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

public class Connector {
    public void connectDB() {
        // This function connects DB
    }
}

public class A {
    private Connector createObjB() {
        return new Connector();
    }

    public void needTest() {
        Connector connector = createObjB();
        connector.connectDB();
        // do something else
    }
}


@RunWith(MockitoJUnitRunner.class)
public class TestA {
    @InjectMocks
    private A a;

    @Test
    public void testNeedTest() {
        // I need to mock connector, but I can't access createObjB
        // How can I stub a fake Connector somewhere so that connectDB() will not access DB?
    }

}

标签: javamockito

解决方案


推荐阅读