Assumindo o seguinte método para testar:
public boolean doSomething(SomeClass arg);
A documentação do Mockito diz que você não deve usar o captor desta maneira:
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
Porque você pode apenas usar o matcher durante o stub:
when(someObject.doSomething(eq(expected))).thenReturn(true);
Mas a verificação é uma história diferente. Se seu teste precisar garantir que esse método foi chamado com um argumento específico, use ArgumentCaptor
e este é o caso para o qual foi projetado:
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));