私はいくつかのパラメータを取る方法があります。そのうちの1つはいくつかのクラスのListであり、nullはこのパラメータの許容値です。Mockitoを使って特定のタイプのヌルリストとマッチさせる
public void doStuff(String string, @Nullable List<SomeClass> list) {
...
}
Mockitoを使用してメソッドがnullとしてパラメータとして呼び出されたことを検証するテストを作成したいと思います。
MyClass myClass = ...
verify(myClass).doStuff(any(String.class), isNull(List.class));
が、これは警告生成します:私は
isNull(List.class)
を使用してみまし必要
未確認の変換
:
:java.util.Listに< com.package.SomeClass>
が見つかっ:java.util.Listのを
私はリストがnullでない場合には、この警告を修正する方法を見ることができます
// this generates the same warning
verify(myClass).doStuff(any(String.class), any(List.class));
// this does not generate the warning
verify(myClass).doStuff(any(String.class), Matchers.anyListOf(SomeClass.class)));
しかし、私はこれらの2つのアプローチを組み合わせる方法を見つけることができないようです。あるいは、私がやろうとしていることを達成する別のアプローチを見つけてください。 (注釈付きの警告を抑制する以外)
なぜ「ヌル」リストが許容可能なパラメータになるのですか?代わりに空のリストを使用しない理由は何ですか? – Spotted
私はそれが理想的なデザインの決定から遠いことに同意します。実際の方法はかなり複雑であり、オプションのパラメータの長いリストを受け入れます。誰かに何十もの空のリストを作成させるのではなく、代わりにnullを渡すことにしました。当然、複数の方法やビルダーや工場を実装する方が理にかなっていましたが、それはAndroidライブラリであり、ユーザビリティの代わりにAPKサイズとデックス数を低く抑えることに重点が置かれていました。私は将来それをきれいにするのが大好きですが、今のところそれは私が仕事をしなければならないことです。 –
しかし、あなたは今問題を解決するのに時間をとっています!なぜこのメソッドをリファクタリングしてモックを動作させようとするのではないのですか?私はそれが完全に時間の価値があると思う。そして、 'null'の代わりに' Collections.emptyList() 'を書くのは大したことではないのですか? – Spotted