Mockito проверяет аргументы вызова метода

При написании модульного теста Mockito для метода с несколькими переданными аргументами я хочу убедиться, что были переданы точные аргументы. Подпись метода (для примера):

public void process(String stringParam, int numParam, CustomObject objectParam)

Я знаю, что эти параметры нужно передать внутрь:

String stringParam = "line1 \n line2 \n line2 \n"
int numParam = 123;
AnotherCustomObject bank = new AnotherCustomObject(1, "Bank name")
CustomObject objectParam = new CustomObject(1, "Customer name", bank);

Метод verify выглядит соответственно:

verify(testObject, times(1)).process(eq(stringParam), eq(numParam), eq(objectParam));

Но результат

Argument(s) are different! Wanted:
...all the details of failure...
Comparison Failure:  <Click to see difference>
...the rest of details...

Когда вы нажимаете Нажмите, чтобы увидеть разницу в надежде увидеть исходную проблему, вы видите только сбивающее с толку сообщение Содержание идентично (по крайней мере, в IntelliJ Idea вы видите это сообщение) Mockito проверяет аргументы вызова метода

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
180
1

Ответы 1

Во время расследования этого случая я наткнулся на несколько сообщений, в которых его корень считался неправильно переопределенным методом equals () для AnotherCustomObject или CustomObject.

После расследования выяснилось, что это не проблема. Все было гораздо прозаичнее:

разрывы строк, которые присутствовали в строке, переданной методу, имели кодировку Windows по умолчанию (/ r / n). Между тем, для вирификации в Mockito я использовал строку только с разрывом / n (это немного странно, так как я получил эту строку при отладке метода).

При этом Inteliji Idea показала обе строки в режиме сравнения как равные.

Обновлять: а лучше
System.getProperty ("file.separator")

Другие вопросы по теме