java - 创建对象时的 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?
}
}