Предполагая следующий метод для тестирования:
public boolean doSomething(SomeClass arg);
Документация Mockito говорит, что вы не должны использовать captor таким образом:
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
Потому что вы можете просто использовать matcher во время заглушки:
when(someObject.doSomething(eq(expected))).thenReturn(true);
Но проверка - это другая история. Если ваш тест должен гарантировать, что этот метод был вызван с определенным аргументом, используйте, ArgumentCaptor
и это тот случай, для которого он предназначен:
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));