我在刚刚实现的类中有一个名为getSubject
的私有方法。我正在尝试对私有方法进行单元测试,但我的问题是私有方法getSubject
正在调用另一个方法getSubjectOracle()
(注意:getSubjectOracle
是 jar 文件中的公共方法),该方法返回String
主题。伪代码如下所示:
public class Service{
private oracleDao
//setter for oracle dao avilable
private String getSubject(String id,Stringountry){
String subject = oracleDao.getSubjectOracle(String id,String country)
return subject;
}
}
知道我如何模拟方法oracleDao.getSubjectOracle(String id,String country)
的返回以便对方法进行单元测试getSubject(String id, String country)
请吗?
我在网上搜索了有用的资源,但没有得到任何资源。
提前谢谢。
一种方法可能是为 oracleDao 编写一个 setter。在那里,您可以设置模拟而不是真实的东西。例如,编写自己的预言机,做你想做的事。在@Before方法中,您将注入模拟预言机道。
所有这些对于像Mockito这样的框架来说都更好。它看起来像这样:
@Mock
YourDaoThing mock;
@Before
public setUp(){
MockitoAnnotation.initMocks(this);
service = new Service();
service.setDao(mock);
}
@Test
public testGetSubject(){
String someString = "whatever";
when(mock.getSubjectOracle(id,country)).thenReturn(someString)
assertEquals(expect, service.callToTheMethodYouTest())
}
如果你试图测试 Service
,那么你也必须模拟oracleDao
并使其getSubjectOracle()
方法返回你想要的字符串。
我假设您不是在测试getSubject()
而是在测试调用getSubject()
的方法。