我在一个刚刚实现的类中有一个名为getSubject
的私有方法。我正在尝试对私有方法执行单元测试但我的问题是私有方法getSubject
正在调用另一个方法getSubjectOracle()
(注意:getSubjectOracle
是jar中的公共方法file)返回String
主题。 pseoudocode如下所示:
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)
进行单元测试吗?
我在网上搜索了有用的资源但无法获得任何资源。
提前致谢。
答案 0 :(得分:1)
如果您要测试Service
,那么您还必须模拟oracleDao
并使其getSubjectOracle()
方法返回您想要的字符串。
我假设您没有测试getSubject()
,而是调用getSubject()
的方法。
答案 1 :(得分:1)
一种方法是为oracleDao编写一个setter。在那里你可以设置模拟而不是真实的东西。例如,写你自己的oracleDao做你想要的。 在@Before方法中,您将注入模拟oracleDao。
使用像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())
}