【问题标题】:Generic assertThat(ArrayList, hasItems(InstanceOfSomeInterface)) not working通用 assertThat(ArrayList,hasItems(InstanceOfSomeInterface))不起作用
【发布时间】:2011-09-14 10:00:53
【问题描述】:

我想将 Hamcrest 的 hasItemsArrayList<? extends SomeInterface> 的“实际”集合一起使用 上

assertThat(ArrayList<? extends SomeInterface>, hasItems(InstanceOfSomeInterface))

编译器说:

Assert 类型中的方法assertThat(T, Matcher&lt;T&gt;) 不适用于参数(ArrayList&lt;capture#9-of ? extends MyInterface&gt;, Matcher&lt;Iterable&lt;MyInterface&gt;&gt;)

出了什么问题?我该怎么办(我真的很想在这里使用 Hamcrest)?

【问题讨论】:

  • 你能发布显示集合类型的代码吗?
  • 我的收藏是 extends IsTreeItem>: private ArrayList&lt;? extends IsTreeItem&gt; filteredAdminUnits; 我想像这样使用 assertThat(filteredAdminUnits, hasItems(anTreeItem))

标签: java generics junit hamcrest


【解决方案1】:
ArrayList<SomeInterface> newList = new ArrayList<SomeInterface>();
newList.addAll(origList);
assertThat(newList, hasItems(InstanceOfSomeInterface));

很遗憾 Assert.assertThat 没有使用 编码?超级还是?扩展以允许您描述的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多