Hamcrest:比较两个自定义类对象集合

时间:2018-10-23 12:42:07

标签: java junit hamcrest

我有两个Collection<Audit>集合:

Collection<Audit> pendingAudits;
Collection<Audit> olderAudits;

因此,我需要比较pendingAudits中的所有olderAudits元素。

为了比较它们,有必要将每个audit.getId().equals(other.getId())进行比较。

请记住,我无法覆盖Audit.equalsAudit.hashCode。这是第三方类。

我想我需要创建一个自定义内联Matcher

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您想尝试使用assertj,可以从其custom comparison strategy中受益

@Test
void myTest() {
    Collection<Audit> pendingAudits = ...
    Collection<Audit> olderAudits = ...

    Comparator<Audit> byId = Comparator.comparing(Audit::getId);
    assertThat(olderAudits).usingElementComparator(byId).containsAll(pendingAudits);
}