将列表与 hamcrest 进行比较

Comparing lists with hamcrest

我想编写一个比较两个列表的单元测试。我尝试使用 hamcrest 来获得良好的可读性和错误消息,但由于某些原因,这无法编译:

List<GDSRecord> expectedRecords = getReferenceRecords(...);

List<GDSRecord> aktualRecords = gdsNetlist.getRecords();

assertThat(aktualRecords, hasItems(expectedRecords.toArray()));

另一方面,这确实编译:

assertThat(asList("a", "b"), hasItems(new String[]{"a"}));

谁能解释一下这里的区别?我不明白.., 谢谢!

很有可能

expectedRecords.toArray()

会将其转换为 Object[],您可以将其更改为使用 List.toArray​(T[] a)

expectedRecords.toArray(new GDSRecord[0])

它应该可以工作。

Hamecrast 对于这样简单的任务来说太复杂了。 Cleaner 是使用标准的 junit 断言。

assertTrue("AktualRecords should contains expectedRecords",aktualRecords.containsAll(expectedRecords));