Java 使用相同的对象断言2个列表

Java 使用相同的对象断言2个列表,java,unit-testing,junit,Java,Unit Testing,Junit,我有一个Java测试项目。我有两个不同的列表和一些对象。如何断言此列表包含相同的对象(不仅等于)?私有布尔资产SameObject(列表列表1,列表2){ assertEquals(list1.size(),list2.size()); 对于(int i=0;i

我有一个Java测试项目。我有两个不同的列表和一些对象。如何断言此列表包含相同的对象(不仅等于)?

私有布尔资产SameObject(列表列表1,列表2){
assertEquals(list1.size(),list2.size());
对于(int i=0;i
您可以执行以下操作:

  • 迭代列表(在一个列表中迭代另一个列表)
  • 使用
    =
    比较条目,因为您要比较引用
  • 如果在内部列表中未找到外部列表中的条目,则返回
    false
  • 如果外部列表的迭代完成,则返回
    true
    (外部列表中的所有对象引用也存在于内部列表中)

请发布一些代码如果对象位于不同的位置怎么办?@NikolayKuznetsov:据我所知,它处理列表是因为顺序很重要。我已经实现了@JB Nizet。我只是有疑问,可能有更简单的方法我还有一个问题。如果要比较两个列表(相等),请使用:assertEquals。但我也可以使用assertThat(…,is(…))。这个函数是等价的吗?我很确定List.equals()不会检查指针是否相等,而是检查两个列表中的相同项的顺序是否相同。除非需要逐项进行更多检查,否则编写for循环是不必要的。
private boolean assertSameObjects(List<?> list1, List<?> list2) {
    assertEquals(list1.size(), list2.size());
    for (int i = 0; i < list1.size(); i++) {
        assertSame(list1.get(i), list2.get(i));
    }
}