2014-10-28 41 views
1

我想测试的方法是这样hamcrest中是否有类型参数匹配器?

public List<String> giveStrings(); 

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

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

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

在此先感谢

回答

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)); 
+0

好,谢谢,似乎无法检验 – 2014-10-28 13:42:00

+0

你可能想尝试http://docs.spring.io /spring/docs/current/javadoc-api/org/springframework/core/ResolvableType.html使用'forClass'和'giveStrings()。getClass()' – 2014-10-28 14:01:13

+1

你可以简化为'everyItem(instanceOf(String.class)) '。 – 2014-10-30 02:11:11

相关问题