2 つの異なるパラメーターを受け入れることができる同じメソッド名の呼び出しを検証するテストを作成しようとしています。私が最初に試したコードスニペット:
ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(4)).addCell(labelCaptor.capture());
ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(2)).addCell(numberCaptor.capture());
ただし、Mockito は、最初の検証で addCell が 6 回実行されたと不満を漏らしています。だから、私はこれを試しました:
ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(labelCaptor.capture());
ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(numberCaptor.capture());
これは実行されますが、両方の ArgumentCaptors で 6 つの引数呼び出しすべてが得られ、期待している 6 つのオブジェクトすべての情報が両方の ArgumentCaptor インスタンスに格納されます。
これは非常に間違っているように感じます。確かに、それを使用してテストを作成できますが、キャプチャーが 2 つのクラスを区別していないという事実は汚いと感じます。Mockitoに2つを区別させる方法はありますか?