hamcrest中是否有类型参数匹配器?

时间:2014-10-28 13:15:51

标签: junit hamcrest

我想测试像这样的方法

public List<String> giveStrings();

使用hamcrest我可以测试返回的类型,例如

assertThat(giveStrings(), instanceOf(ArrayList.class));

但我想知道的是它是否是一个字符串列表。是否有现有的匹配器?

提前致谢

1 个答案:

答案 0 :(得分:2)

如此简单的答案是No,因为在运行时Java会type-erasure所以所有泛型都转换为Object。因此,在运行时,List<String>实际上只是ListList<Object>String类型信息丢失。

考虑使用

IsIterableContainingInOrder.containsInOrder(
               CoreMatchers.instanceOf(String.class),
               ...)

根据评论,使用Every

assertThat(myList, Every.everyItem(instanceOf(String.class));