Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Junit 如何在Mockito.thenReturn而不是NativeQuery中返回查询?_Junit_Mockito - Fatal编程技术网

Junit 如何在Mockito.thenReturn而不是NativeQuery中返回查询?

Junit 如何在Mockito.thenReturn而不是NativeQuery中返回查询?,junit,mockito,Junit,Mockito,我必须为下面的DAO类编写Junit测试用例 public class UserDao{ public List<User> getUserList(String query, Session session){ List<User> userList = new ArrayList<User>(); try{ Query query = session.createSQLQuery(query); List<Object[]> objList

我必须为下面的DAO类编写Junit测试用例

public class UserDao{

public List<User> getUserList(String query, Session session){
List<User> userList = new ArrayList<User>();
try{
Query query = session.createSQLQuery(query);
List<Object[]> objList = query.getResultList();
if(objList!=null && !objList.isEmpty()){
for(Object[] o : objList){
User user = new User();
//populate user values
userList.add(user);
}
}
} catch(Exception e){
System.out.println(e.getMessage());
}
return userList;
}
公共类UserDao{
公共列表getUserList(字符串查询,会话){
List userList=new ArrayList();
试一试{
Query Query=session.createSQLQuery(查询);
List objList=query.getResultList();
if(objList!=null&&!objList.isEmpty()){
for(对象[]o:objList){
用户=新用户();
//填充用户值
添加(用户);
}
}
}捕获(例外e){
System.out.println(e.getMessage());
}
返回用户列表;
}
我做过类似的事情

@Test
public void testEmptyListMethod(){
List<User> userList = new ArrayList<User>();
List<Object[]> objList = new ArrayList<Object[]>();
Query query = Mockito.mock(Query.class);
Session s = Mockito.mock(Session.class);
Mockito.when(query.getResultList()).thenReturn(objList);
Mockito.when(s.createSQLQuery(Mockito.anyString())).thenReturn(query));//Throws compiler error here. 
//It is expecting a NativeQuery to be returned. Not the normal Query(org.hibernate.query)
userList = daoObj.getUserList(Mockito.anyString(),s);
assertTrue(userList.isEmpty());
}
@测试
public void testemtylistmethod(){
List userList=new ArrayList();
List objList=new ArrayList();
Query=Mockito.mock(Query.class);
sessions=Mockito.mock(Session.class);
Mockito.when(query.getResultList()).thenReturn(objList);
Mockito.when(s.createSQLQuery(Mockito.anyString()).thenReturn(query));//在此处抛出编译器错误。
//它期望返回一个NativeQuery,而不是普通的查询(org.hibernate.Query)
userList=daoObj.getUserList(Mockito.anyString(),s);
assertTrue(userList.isEmpty());
}
在测试类中要做的更改是什么?如何在返回中返回查询而不是NativeQuery?这种方法有效吗?请帮助我。提前感谢