Class <T>のパラメータに渡されたnullをMockitoと照合する方法


84

私はこれらのような方法を持っています:

public <T> method(String s, Class<T> t) {...}

null他のパラメーターにマッチャーを使用するときに2番目の引数に渡されることを確認する必要があることを確認する必要があります。

@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));

しかし、(警告を抑制せずに)より良い方法はありますか?T他のメソッドの戻り値の型を表します。voidこの場合nullは、で渡されます。


null(の代わりにany(Class.class))試しましたか?
アンディ

1
問題は、他のパラメーターにマッチャーを使用する場合、つまりすべてにマッチャーを使用する必要がある場合です。
空白の

回答:


40

デビッドウォレスの答えからの更新:

2016-12の時点で、Java8およびMockito2.3、

public static <T> T isNull(Class<T> clazz)

は非推奨であり、Mockito3.0で削除されます

使用する

public static <T> T isNull()

代わりに


4
これは100%は機能しません。今度は、の(Integer) isNull()代わりにクラスをキャストする必要がありisNull( Integer.class )ます。
Henrique de Sousa

4
ここでキャストを必要としないようにするための構文は次のとおりですorg.mockito.Mockito.<String>isNull()
Del

143

MockitoにはisNullマッチャーがあり、クラスの名前を渡すことができます。したがって、他のマッチャーと一緒に使用する必要がある場合、正しいことは

verify(client).method(eq("String"),isNull(Class<?>.class));

これは現在非推奨です。新しいメソッドについては、以下の回答を参照してください-https://stackoverflow.com/a/41250852/1348


7
文字列の場合はを使用する必要があることに注意してください(String) isNull()
マイクライランダー2013年

2
ええ。 isNull(String.class)(String) isNull()は同等です。あなたにとってより意味のある方を選んでください。
Dawood ibn Kareem 2013

@mikerodent提案された編集をありがとう。あなたは、絶対に正しい。しかし、私の提案を編集するのではなく、新しい答えとして投稿する必要があります。完全に同意しましたが、編集を拒否しました。
Dawood ibn Kareem 2016

1
OK!理由はよくわかりませんが、SOプロトコルに関するあなたのはるかに優れた知識に敬意を表します。
マイクげっ歯類2016

1
理由もわかりません。確かに、差し迫ったAPIの変更は、この回答に何らかの形で反映されているはずです。誰も下にスクロールしません:)
空白

20

これは私のために働きます:

verify(client).method(eq("String"), eq((Class<?>) null));

2
ありがとう!nullをキャストすることは考えていません...さようなら@ SuppressWarnings–
空白
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.