Поскольку другие ответы имеют смысл и делают тесты очевидными, я все же рекомендую тестировать, как если бы метод не принимал vararg, а вместо этого использовал обычные четко определенные параметры. Это помогает в ситуациях, когда используются переопределенные методы в связи с возможными неоднозначными параметрами, например SLF4J-logger:
тестировать:
jobLogger.info("{} finished: {} tasks processed with {} failures, took {}", jobName, count, errors, duration);
У этого есть куча переопределений, и важный метод объявлен так:
Logger.info(String, Object...)
проверка:
verify(loggerMock).info(anyString(), anyString(), anyInt(), anyInt(), anyString());
доказательство того, что указанное выше работает, поскольку errors
является целым числом, а не длинным, поэтому следующее не будет выполняться:
verify(loggerMock).info(anyString(), anyString(), anyInt(), anyLong(), anyString());
Таким образом, вы можете легко использовать when()
вместо verify()
-stuff для установки требуемого возвращаемого значения.
И это, вероятно, показывает больше намерений и более читабельно. Здесь также можно использовать захваты, и таким образом они становятся намного доступнее.
Протестировано с Mockito 2.15
person
sjngm
schedule
14.06.2021