2011-09-14 19 views
4

我想使用Hamcrest的hasItems與 「實際」 的集合,是對通用assertThat(ArrayList中,hasItems(InstanceOfSomeInterface))不工作

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

編譯器的ArrayList<? extends SomeInterface> 說:

Assert類型中的方法assertThat(T, Matcher<T>)不適用於參數(ArrayList<capture#9-of ? extends MyInterface>, Matcher<Iterable<MyInterface>>)

出了什麼問題?我能做些什麼(我真的想在這裏使用Hamcrest)?

+0

你能發佈顯示集合類型的代碼嗎? –

+0

我的收藏是類型<?擴展IsTreeItem>: 'private ArrayList <?擴展了IsTreeItem> filteredAdminUnits;' 和這個我想要使用像這樣 'assertThat(filteredAdminUnits,hasItems(anTreeItem))' – dermoritz

回答

4
ArrayList<SomeInterface> newList = new ArrayList<SomeInterface>(); 
newList.addAll(origList); 
assertThat(newList, hasItems(InstanceOfSomeInterface)); 

不幸的是,Assert.assertThat沒有使用編碼?超級?將擴展爲允許您描述的內容。

+0

thx- that works – dermoritz