为什么当输出相同时,我对 Object 的 assertEquals() 的测试失败?

Why my test to assertEquals() for Object fails when output is same?

提问人:blekione 提问时间:12/4/2015 更新时间:12/4/2015 访问量:93

问:

我的方法是 RESTful 服务的一部分,但我认为在这种情况下这无关紧要。

我有一个测试来检查将XML解析为对象的方法是否正常工作:

public void test() {
    MemberEurope testMemberObject = new MemberEurope();
    testMemberObject.setFirstName("Marcin");    
    testMemberObject.setLastName("Kruglik");
    testMemberObject.setStreet("256 Clarendon Street");
    testMemberObject.setCity("Boston");
    testMemberObject.setCounty("MA");
    testMemberObject.setPostcode("02115");
    testMemberObject.setCountry("USA");
    testMemberObject.setId(1);
    String testMember = "<member>"
            + "<first-name>Marcin</first-name>"
            + "<last-name>Burke</last-name>"
            + "<street>256 Clarendon Street</street>"
            + "<city>Boston</city>"
            + "<county>MA</county>"
            + "<postcode>02115</postcode>"
            + "<country>USA</country>"
            + "</member>";
    MemberResourceServiceEU testCase = new MemberResourceServiceEU();
    byte[] data = testMember.getBytes();
    InputStream is = new ByteArrayInputStream(data); 
    testCase.createMember(is);
    assertEquals(testMemberObject, testCase.memberNamesDB.get("Bill Burke"));

为什么我的 jUnit 测试失败,而 Failure Trace 窗口中显示的实际输出相同?

java.lang.AssertionError: expected:  com.restfully.member.domain.MemberEurope<Member
First Name: Marcin
Last Name: Kruglik
Address
Street:256 Clarendon Street
City:Boston
County: MA
Postcode: 02115
Country: USA
Id:1> but was: com.restfully.member.domain.MemberEurope<Member
First Name: Marcin
Last Name: Kruglik
Address
Street:256 Clarendon Street
City:Boston
County: MA
Postcode: 02115
Country: USA
Id:1>

测试调用 to overridden by me 的方法。 Track Failure 显示了更多的跟踪信息,但我认为它们在这里并不重要,如果它们很重要,那么我也会将其粘贴到此处。toString()Member

爪哇岛 休息 单元测试 xml 解析

评论


答:

2赞 Buddy 12/4/2015 #1

是否定义了自己的运算符?如果不是,则默认仅检查两个对象是否为同一实例(而不是内容是否相等)。MemberEuropeequalsObject.equals

评论

0赞 blekione 12/4/2015
不,它没有。因此,在我的情况下,为了检查内容,我可以使用'toString()'方法吗?它们不是相同的实例,你可以从代码中看到。我认为这就是测试失败的原因