我有一个名为FilterSite的类,它有一个UserDao类型的实例变量。因为userDao变量仅在此类中使用,所以我将其设置为私有。
测试时,我通过setter方法设置此私有userDao。 UserDao从数据库中提取数据,并在filterData()中使用。
class FilterSite {
@Autowired
private UserDao userDao;
public void filterData(HttpServletRequest request, HttpServletResponse response) {
User user = userDao.findByUsername(request.getParameter("username")
if( user != null && request.getParameter("site").equalsIgnoreCase(user.getSite())) {
//do something
}
}
public void setUserDao(UserDao dao) {
this.userDao = dao;
}
}
我有一个名为TestFilterSite的测试类,它创建一个随机的userDao并设置FilterSite类userDao。
public class TestFilterSite {
@Mock
UserDao userDao;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
Mockito.when(userDao.findByUsername(validUsername)).thenReturn(createUser());
User user = userDao.findByUsername(validUsername);
Assert.assertEquals(validUsername,user.getUsername());
Assert.assertEquals(validPassword,user.getPassword());
Mockito.verify(userDao).findByUsername(validUsername);
}
@Test
public void testFilterSiteWhenBlankSiteIsProvided(){
FilterSite filterSite = new FilterSite();
filterSite.setUserDao(userDao);
filterSite.filterData(MockHttpServletRequest, MockHttpServletResponse);
//assert responses
}
}
在阅读了一些文章之后,我发现在编写测试类时我不应该使用getter / setter作为私有变量。 那么,我该如何为这门课写测试?
答案 0 :(得分:-1)
您可以在需要的地方使用Getter / Setter。你可以使用OpenPoJo库来测试你的getter / setter方法。