Java EasyMock:如何模拟对象的贴图

Java EasyMock:如何模拟对象的贴图,java,junit,easymock,Java,Junit,Easymock,我是EasyMock的新手,尝试寻找问题的解决方案,但没有找到。我有一个类“Student”,它有几个属性,一个是“Student\u id”,它有所有setter和getter方法。我写了一个这样的函数,它把学生对象的映射作为键,值是他们的CGPA,它返回一个由CGPA排名前5的学生组成的映射 Map<Student,Double> getMaxCPAStudent(Map<Student,Double>) 但是当把它们放在不同分数的地图上时,它们都有相同的键,

我是EasyMock的新手,尝试寻找问题的解决方案,但没有找到。我有一个类“Student”,它有几个属性,一个是“Student\u id”,它有所有setter和getter方法。我写了一个这样的函数,它把学生对象的映射作为键,值是他们的CGPA,它返回一个由CGPA排名前5的学生组成的映射

Map<Student,Double>  getMaxCPAStudent(Map<Student,Double>)  
但是当把它们放在不同分数的地图上时,它们都有相同的键,如何测试这个功能

谢谢,
Amit

我认为EasyMock在其模拟中覆盖了
hashcode()
equals()
,因此创建多个模拟学生将永远不会有相同的散列。这意味着你应该能够把它们都放在地图上

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

有点离题,除非您使用的是Easymock的古老版本,否则您永远不必处理MockControl类

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

应该可以正常工作。

我对您要测试的内容有点困惑。您是在测试
getmaxcpastuent
方法是否返回正确的结果,还是在测试所提供的映射是否按预期进行搜索?我想知道你是否应该嘲笑
地图
,而不是
学生
。。。
Student mockStudent = EasyMock.createMock(Student.class);