【问题标题】:How to compare two Hash maps whose values are class objects in a Junit Test case?如何在Junit测试用例中比较两个值为类对象的哈希映射?
【发布时间】:2016-11-14 17:04:56
【问题描述】:
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));
    }
}

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

【问题讨论】:

标签: java hashmap junit4


【解决方案1】:

在不知道 AllFunctions 是什么的情况下,我只能猜测您想要实现的目标。

Hashmap#equals

比较指定对象与此映射是否相等。退货 如果给定对象也是一个映射并且这两个映射表示相同的映射,则为 true。更正式地说,如果 m1.entrySet().equals(m2.entrySet()),则两个映射 m1 和 m2 表示相同的映射。这确保了 equals 方法在不同的实现中正常工作 地图界面。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多