[解決済み] ここで、誤った引数マッチャーが検出されました。Mockitoでは、検証やスタブ以外で引数マッチャーを使用することはできません。
質問
以下の2つのテストケースのうち BundleProcessorTest.java 最初のテストケースは成功しましたが、次の例外が発生しました。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: ここで、誤った引数マッチャーが検出されました。
-> at bundle.test.BundleProcessorTest.bundlePluginShouldNotBeNull(BundleProcessorTest.java:22)
引数マッチャーは、検証やスタブ以外で使用することはできません。 引数マッチャーの正しい使用例です。 when(mock.get(anyInt())).thenReturn(null).When(mock.get(anyInt())).thenReturn(null); doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject()); verify(モック).someMethod(contains("foo"))
また、このエラーは、引数マッチャーを使用しているために表示されることがあります。 メソッドをモック化することができません。以下のメソッド できない である stubbed/verified: final/private/equals()/hashCode().
で bundle.test.BundleProcessorTest.bundlePluginCollectionShouldNotBeNull(BundleProcessorTest.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
以下、簡略化したコード一覧です :-)
BundlePlugin.java
package bundle;
import java.util.List;
public class BundlePlugin {
private final String pluginName ;
private final List<String> featureContent ;
public BundlePlugin(String pluginName, List<String> featureContent) {
super();
this.pluginName = pluginName;
this.featureContent = featureContent;
}
public String getPluginName() {
return pluginName;
}
public List<String> getFeatureContent() {
return featureContent;
}
}
BundleProcessor.java
package bundle;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class BundleProcessor {
public BundlePlugin getBundlePlugin(String pluginName, Iterator<String> artifactIterator) {
List<String> featureContent = new ArrayList<String>() ;
return new BundlePlugin(pluginName, featureContent);
}
}
BundleProcessorTest.java
package bundle.test;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import bundle.BundleProcessor;
public class BundleProcessorTest {
BundleProcessor bundleProcessor = new BundleProcessor() ;
@Test
public void bundlePluginShouldNotBeNull() {
Iterator<String> artifactIterator = mock(Iterator.class) ;
bundle.BundlePlugin bundlePlugin = bundleProcessor.getBundlePlugin(anyString(), artifactIterator) ;
assertNotNull( bundlePlugin );
}
@Test
public void bundlePluginContentShouldNotBeNull() {
Iterator<String> artifactIterator = mock(Iterator.class) ;
bundle.BundlePlugin bundlePlugin = bundleProcessor.getBundlePlugin(anyString(), artifactIterator) ;
List<String> featureContent = bundlePlugin.getFeatureContent() ;
assertNotNull( featureContent );
}
}
このテストを問題なく実行する方法。
1を編集します。
しかし bundlePluginCollectionShouldNotBeNull テストに @Ignore アノテーションを付けると、最初のテストケースは例外なくパスします。
解決方法は?
mockitoを使用しています。
anyString()
テストメソッドを呼び出す際に、モックオブジェクトを検証するためにのみ使用します。あなたのテストでは、空の文字列
""
の代わりに
anyString()
.
関連
-
[解決済み] モッキートで発見された未完成のスタッブ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
最新
-
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の用途は何ですか?
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] Mockitoのマッチャーはどのように機能するのですか?