Тъй като другите отговори имат смисъл и правят тестовете очевидно да работят, все пак препоръчвам да се тества така, сякаш методът не приема vararg, а вместо това обикновени добре дефинирани параметри. Това помага в ситуации, в които са налице отменени методи във връзка с възможни двусмислени параметри, като например SLF4J-регистратор:
да тествам:
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