如何在Junit测试用例中比较值为类对象的两个Hash映射?

时间:2016-11-14 17:04:57

标签: java hashmap junit4

public class TestFailure {

    @Test
    public void testSwitch() throws CustomException {
        Employee emp = new Employee(123, "John", "1234567890", "CEO", 0);
        Map<Integer,Employee> exhmp = new HashMap<Integer, Employee>();
        AllFunctions f = new AllFunctions();
        exhmp.put(123, emp);
        Map<Integer, Employee> htest= f.AddEmployee();
        assertTrue(exhmp.equals(htest));
    }
}

即使来自控制台的输入与employee对象中提供的输入相同,测试用例也会作为测试失败。但是,如果员工类的不同属性与htest分别进行比较,则测试返回true。 Allfunctions类基本上通过从控制台询问详细信息并创建包含所有员工对象的hashmap来形成员工对象。

1 个答案:

答案 0 :(得分:-1)

如果不知道AllFunctions是什么,我只能猜出你想要实现的目标。

的Hashmap#等于

  

将指定对象与此映射进行相等性比较。返回   如果给定对象也是一个映射,并且两个映射表示相同的映射,则返回true。更正式地说,如果m1.entrySet()。equals(m2.entrySet()),则两个映射m1和m2表示相同的映射。这可确保equals方法在不同的实现中正常工作   Map接口。

Entry#equals将使用equals方法比较键和值。因此,如果您在Employee类中实现了equals(和hashcode)方法,那么您的代码应该可以正常工作。