Когда вы описываете свою проблему, вы можете проверить свой метод только на наличие побочных эффектов или если он вызывает исключение.Самый простой способ сделать это - использовать фальшивый фреймворк, такой как JMockit или Mockito.Вы должны смоделировать первый метод после завершения проверки пользовательского ввода:
public void deploy(UserInput userInput) {
if (userInput is wrong)
return;
//start deployment process
startDeploy(); // mock this method
}
Вы также можете расширить тестируемый класс и переопределить startDeploy (), если это возможно.Это позволило бы избежать использования инфраструктуры для имитации.
Альтернатива - интеграционные тесты
Похоже, что метод развертывания является большим и сложным и имеет дело с файлами, файловыми системами, внешними службами (ftp)и т. д.
В долгосрочной перспективе иногда проще просто принять то, что вы имеете дело с внешними системами, и протестировать эти внешние системы.Например, если deploy () копирует файл в каталог x, проверьте, что файл существует в целевом каталоге.Я не знаю, насколько сложное развертывание, но часто издеваться над этими методами может быть так же сложно, как просто тестировать реальное поведение.Это может быть громоздким, но, как и большинство тестов, это позволит вам реорганизовать ваш код, чтобы его было проще понять.Если ваша цель - рефакторинг, то, по моему опыту, рефакторинг проще, если вы тестируете реальное поведение, а не издеваетесь.