EasyMock:如何模拟对象的地图

时间:2014-03-08 03:51:24

标签: java junit easymock

我是EasyMock的新手,尝试搜索我的问题的解决方案但是却找不到。我有一个班级“学生”,它有几个属性,一个是“student_id”,它有所有的setter和getter方法。我编写了一个这样的函数,它将Map of Student对象作为键,值为CGPA,它返回一个由CGPA提供前5名学生的Map。

Map<Student,Double>  getMaxCPAStudent(Map<Student,Double>)  

在我的测试课中,我写道:

control = EasyMock.createControl();
mockStudent = control.createMock(Student.class);  

但是当他们将它们放在具有不同分数的Map中时,它们都将具有相同的键,如何测试此功能?

谢谢, 阿米特

1 个答案:

答案 0 :(得分:0)

我认为EasyMock会在其模拟中覆盖hashcode()equals(),因此创建多个模拟学生将永远不会拥有相同的哈希。这意味着您应该能够将它们全部放在Map中。

因此,您的测试代码与使用此方法编写生产代码时不应有任何不同。创建一些模拟学生,将它们放在Map中,然后调用max方法获取新地图并检查键和值是否正确。

稍微偏离主题,除非您使用的是Easymock的 Ancient 版本,否则您永远不必处理MockControl类。

Student mockStudent = EasyMock.createMock(Student.class);

应该工作得很好。