任何人都可以解释下面的情况
要测试的代码
UserTransaction.
java
@Override
public ServiceResponse get(String name) {
ServiceResponse response = new ServiceResponse();
List> exp = new ArrayList>();
Map map = new HashMap();
map.put("expression", "eq");
map.put("property", "name");
map.put("value", name);
exp.add(map);
List users = userDao.getByCriteria(exp);
if (!users.isEmpty()) {
response.setResponse(users.get(0));
} else {
response.setResponse(null);
}
return response;
}
UserDao.java
public List getByCriteria(List> exp) {
DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
for (Integer i=0;i
String expression = (String) exp.get(i).get("expression");
String property = (String) exp.get(i).get("property");
if(expression.equals("eq"){
criteria.add(Restrictions.eq(property,exp.get(i).get("value")));
}
}
return hibernateTemplate.findByCriteria(criteria);
}
UserTransactionTest.java
private UserTransaction userTransactions = new UserTransaction();
private UserDao userDao = mock(UserDao.class);
@Test
public void testGet() {
User user = new User();
user.setName("Raman");
try {
when(userDao.getByCriteria(anyList())).thenReturn(user);
} catch (Exception e) {
e.printStackTrace();
}
ServiceResponse response = userTransactions.get("raman");
User result = response.getResponse();
assertEquals("Raman", result.getName());
assertEquals(0, response.getErrors().size());
}
工作良好.
但是我没有通过“anyList()”来传递用户定义的列表“myList”
List> myList = new ArrayList>();
Map map = new HashMap();
map.put("expression","eq");
map.put("property","name");
map.put("value","raman");
myList.add(map);
when(userTransactions.getByCriteria(myList)).thenReturn(user);
在assertEquals()行引发NullPointerException.为什么?如果给出anyList()会发生什么?