Java说它们不相等

时间:2014-02-14 23:33:40

标签: java unit-testing assert

Java表示以下内容不相同:

java.lang.AssertionError: expected:<[[(7,UP), (2,RIGHT)], [(4,DOWN), (11,MIDDLE)], 
[(9,RIGHT), (1,UP)]]>
 but was:<[[(2,RIGHT), (7,UP)], [(11,MIDDLE), (4,DOWN)], [(1,UP), (9,RIGHT)]]>

(其中每个都是HashSet,每个子集是另一个HashSet)

2 个答案:

答案 0 :(得分:2)

没有显示代码,所以这些只是猜测。

首先,如上所述,Set的元素未实现.equals() / .hashCode()

其次,你在assertEquals()上使用Collection:当面对Collection s作为参数时,许多测试框架(例如TestNG)将会成功,当且仅当两个集合具有相同的元素以相同的顺序。使用另一种方法,例如assertEqualsNoOrder-) - 但是这里因嵌入Collection而变得复杂。或者只使用assertTrue(coll1.equals(coll2))

答案 1 :(得分:1)

最有可能的问题是,由(7,UP)等表示的类型的equals()或hashCode()方法的行为与您期望的不同。