我想测试像这样的方法
public List<String> giveStrings();
使用hamcrest我可以测试返回的类型,例如
assertThat(giveStrings(), instanceOf(ArrayList.class));
但我想知道的是它是否是一个字符串列表。是否有现有的匹配器?
提前致谢
答案 0 :(得分:2)
如此简单的答案是No
,因为在运行时Java会type-erasure
所以所有泛型都转换为Object
。因此,在运行时,List<String>
实际上只是List
或List<Object>
。 String
类型信息丢失。
考虑使用
IsIterableContainingInOrder.containsInOrder(
CoreMatchers.instanceOf(String.class),
...)
根据评论,使用Every
assertThat(myList, Every.everyItem(instanceOf(String.class));