关于可变参数方法的EasyMock单元测试问题,求答案!

palocc 2012-03-16 06:00:34
各位大侠,最近用EasyMock配合Junit进行单元测试。

开始觉得不错,后来发现一个问题

我有一个方法,是使用“可变参数”这种类型声明的:


/**
*根据条件查询用户,userId是必选项,后面的参数是不定的,比如用户名、年龄、性别等条件
*/

public class UserDao() {
public User findUser(String userId, String...args) {
//业务逻辑
}
}



我在我的Service方法中对这个方法进行调用


/**
*根据条件查询用户,userId是必选项,后面的参数是不定的,比如用户名、年龄、性别等条件
*/

public class UserService() {
private UserDao userDao;
public User findUser(String userId, String userName, String age, String sex) {
List<String> list = new ArrayList<String>(); //用于保存参数列表
if(userName != null) {
list.add(userName);
}
//同上判断age以及sex,加入list

return userDao.findUser(userId, list.toArray());
}
}



我对以上Service进行单元测试,Mock了UserDao

UserDao mock = createMock(UserDao.class);



然后在录制行为的时候,就出问题了:


reset(mock);
mock.findUser(userId, userName); //先测试只输入userName的情况
replay(mock);



类似这样的测试,执行junit,会抛出异常,因为mock需要指定参数,但是实际userDao的findUser方法参数列表是不定的,这样调用的时候就会出现findUser预期调用1次,实际上0次的异常。


这种情况怎么处理啊?

...全文
221 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧