2016-08-28 9 views
1

私はJavaで単体テストを書こうとしています。以下は、私のコードの抜粋ですmockito部分parmatersを嘲笑

クラスのTemp { ます。public voidメソッド(){

 return someObject.someMethod(param1, param2, param3, param4, param5); 
    } 
} 

試験方法:

@Test 
public void testMethod() { 

    Mokito.when(someObjectMock.someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyInt(), Mockito.anyBoolean(), 
        false)). thenReturn(true); 

    boolean status = temp.method(); 

    Assert.assertEquals(true, status); 
} 

テストケースを実行する上で、私はしかし、エラーの下に取得しています:

Invalid Use of argument matchers ! 
5 matchers expected, 4 recorded 

私の理解が正しいとすれば、すべてのパラメータ嘲笑されてしまった。しかし、私が望むものではないので、最初の4つのパラメータを疑似し、5パラメータ(真または偽)に基づいて、メソッドの適切な戻り値が指定されます。

これを回避する方法はありますか?最後のパラメータのための

あなたがMatchers.eq(false)使用する必要があるおかげで

答えて

2

(またはMockito.eq(false)は、同じ静的メソッドは、両方の場所で公開されている)のではなく、プレーンfalse

つまり、スタブ(when()コール)のすべてのマッチャを値を期待するのではなくany()にすることを検討してください。ここでは2つのケースがあります:あなたのテストで実際にどの値がモックに渡されるかが気になります。その場合はverify()コールが必要です(Mockitoに期待されていないモック期待値はエラーではないため)その場合、特定の値を期待するだけでテストが脆弱になります。いずれにしても、異なる引数値に基づいてスタブから異なる値を返す必要がないかぎり、スタブしている間は特定の引数を期待する価値はありません。

関連する問題