1
我想测试的方法是这样hamcrest中是否有类型参数匹配器?
public List<String> giveStrings();
使用hamcrest我可以测试返回的类型,例如
assertThat(giveStrings(), instanceOf(ArrayList.class));
但我想知道的是,它是否是字符串列表。有没有现有的匹配器?
在此先感谢
我想测试的方法是这样hamcrest中是否有类型参数匹配器?
public List<String> giveStrings();
使用hamcrest我可以测试返回的类型,例如
assertThat(giveStrings(), instanceOf(ArrayList.class));
但我想知道的是,它是否是字符串列表。有没有现有的匹配器?
在此先感谢
那么简单的答案是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));
好,谢谢,似乎无法检验 – 2014-10-28 13:42:00
你可能想尝试http://docs.spring.io /spring/docs/current/javadoc-api/org/springframework/core/ResolvableType.html使用'forClass'和'giveStrings()。getClass()' – 2014-10-28 14:01:13
你可以简化为'everyItem(instanceOf(String.class)) '。 – 2014-10-30 02:11:11