[解決済み] モッキート:InvalidUseOfMatchersException
2022-02-26 23:02:46
質問
DNSチェックを行うコマンドラインツールがあります。DNSチェックが成功した場合、コマンドはさらなるタスクに進みます。私はMockitoを使用してこのためのユニットテストを書こうとしています。以下は私のコードです。
public class Command() {
// ....
void runCommand() {
// ..
dnsCheck(hostname, new InetAddressFactory());
// ..
// do other stuff after dnsCheck
}
void dnsCheck(String hostname, InetAddressFactory factory) {
// calls to verify hostname
}
}
InetAddressFactoryを使って、静的な実装をモックにしています。
InetAddress
クラスがあります。以下は、このファクトリーのコードです。
public class InetAddressFactory {
public InetAddress getByName(String host) throws UnknownHostException {
return InetAddress.getByName(host);
}
}
これが私のユニットテストケースです。
@RunWith(MockitoJUnitRunner.class)
public class CmdTest {
// many functional tests for dnsCheck
// here's the piece of code that is failing
// in this test I want to test the rest of the code (i.e. after dnsCheck)
@Test
void testPostDnsCheck() {
final Cmd cmd = spy(new Cmd());
// this line does not work, and it throws the exception below:
// tried using (InetAddressFactory) anyObject()
doNothing().when(cmd).dnsCheck(HOST, any(InetAddressFactory.class));
cmd.runCommand();
}
}
実行時の例外
testPostDnsCheck()
をテストしてください。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
2 matchers expected, 1 recorded.
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
これを解決する方法について、何かご意見があればお聞かせください。
どのように解決するのですか?
エラーメッセージには、解決方法の概要が記載されています。行
doNothing().when(cmd).dnsCheck(HOST, any(InetAddressFactory.class))
は、すべての raw 値かすべての matcher を使う必要があるにもかかわらず、ひとつの raw 値とひとつの matcher を使っています。正しいバージョンは次のようになります。
doNothing().when(cmd).dnsCheck(eq(HOST), any(InetAddressFactory.class))
関連
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] アニメーションGIFの表示
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] Mockitoを使用して特定のメソッドが呼び出されていないことを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正