2011-05-30 6 views

答えて

102

試してみてください。私は残念ながら、あなたがこのような場合には、静的インポートを使用することはできません... any()入力されたときに実際に、IntelliJのは、自動的にこの修正プログラムを提案し

verify(someService).process(Matchers.<Collection<Person>>any()); 

+0

それは動作するようだ! – Svish

+4

ありがとうございます...しかし、神様は恐ろしいようですが、正しい方法が必要です。 –

+1

マッチする容器の特殊なケースをターゲットにするのとは対照的に、質問に答えている唯一の解決策を紹介します。 –

-1

タイプ消去のためにこれを表現することはできません。あなたがコードで表現することができたとしても、Mockitoは実行時にそれを確認する機会がありませんでした。

interface PersonCollection extends Collection<Person> { /* nothing */ } 

のようなインターフェイスを代わりに作成して、コード全体でこれを使用することができます。

編集:私は間違っていた、Mockitoはあなたが欲しいものであるanyCollectionOf(..)を持っています。

+1

実際には、APIがそれを受け入れるならば、 "型リテラル"オブジェクトで表現することができます: 'any(新しいTypeLiteral >(){})'。もちろん、きれいではありませんが、すべての型情報が実行時に(Reflectionまたはバイトコードライブラリを介して)利用可能であるため動作します。 –

+0

@Rogerio:あなたは正しいです、そして、これは確かにこれをサポートしているようです。しばらくそれを使用していない... – Waldheinz

21

試してみてください。

verify(someService).process(anyCollectionOf(Person.class)); 

バージョン1.8 Mockitoは

public static <T> Collection<T> anyCollectionOf(Class<T> clazz); 
+0

anyCollectionOf()に加えてanyListOf()もあります。http://stackoverflow.com/a/10512526/908677 –

+0

anyCollectionOf(クラス clazz)は次のように削除されます。 Mockito 3.0とjava8。新しいメソッドがあります:anyOptional(クラスクラス)参照:https://github.com/mockito/mockito/issues/308 – Naxos84

1

を紹介しているので、あなたが自分のメソッドを使用している場合、あなたも、静的インポートを使用することができます。

private Collection<Person> anyPersonCollection() { 
    return any(); 
} 

次にあなたが使用することができますが

verify(someService).process(anyPersonCollection()); 
関連する問題