【问题标题】:Assert 2 lists with same objects断言 2 个具有相同对象的列表
【发布时间】:2013-02-27 11:22:23
【问题描述】:

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

【问题讨论】:

  • 请贴一些代码

标签: java unit-testing junit


【解决方案1】:
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));
    }
}

【讨论】:

  • 如果对象位于不同的位置怎么办?
  • @NikolayKuznetsov:据我了解,它处理列表,因为顺序很重要。
  • 我已经像@JB Nizet 那样实现了。我只是有疑问,可能有更简单的方法
  • 我还有一个问题。如果我想比较两个列表(等于),请使用:assertEquals。但我也可以使用 assertThat(..., is(...))。这个功能是等价的吗?
  • 我相当肯定 List.equals() 不会检查指针是否相等,而是检查相同项目在两个列表中的顺序是否相同。除非您需要逐项进行更多检查,否则无需编写 for 循环。
【解决方案2】:

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多