将列表与 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));
我想编写一个比较两个列表的单元测试。我尝试使用 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));