Лінія
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
зробив би те саме, що
when(someObject.doSomething(Matchers.any())).thenReturn(true);
Отже, використовуючи argumentCaptor.capture (), коли заглушка не має додаткової вартості. Використання Matchers.any () краще показує, що насправді відбувається, і для цього краще для читабельності. З argumentCaptor.capture () ви не можете прочитати, які аргументи насправді відповідають. І замість того, щоб використовувати будь-який (), ви можете використовувати більш конкретні відповідники, коли маєте більше інформації (клас очікуваного аргументу), щоб покращити свій тест.
І ще одна проблема: Якщо при аргументі використовувати argumentCaptor.capture (), стає незрозумілим, скільки значень слід очікувати, щоб вони були захоплені після перевірки. Ми хочемо зафіксувати значення під час перевірки, а не під час заглушки, оскільки на даний момент ще немає значення для захоплення. Отже, що таке захоплення аргументу захоплення методом захоплення під час заглушки? чи він нічого не захоплює? У мене немає відповіді на це запитання. Я вважаю це невизначеною поведінкою, і я не хочу використовувати невизначену поведінку.