Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Design, Quality, Testing > Тестирование ввода\вывода с консоли


Автор: Aazmandius 7.10.2010, 09:43
Какие существуют приемы, позволяющие это сделать? Типичный случай - есть обработчик ввода с клавиатуры, умеет валидировать введенные символы, в случае ошибки выводит в консоль соответствующее сообщение, и нужно написать тест для него. 

Автор: powerOn 7.10.2010, 10:14
Взаимодействие класса с консолью в общем случае является взаимодействием с OutputStream. Более того, это stateless взаимодействие, а значит нужно делать http://xunitpatterns.com/Behavior%20Verification.html, а не состояния. Проверка будет заключаться в подмене объекта консоли на некий Mock объект, который будет ожидать определенных вызовов в определенных ситуациях.

Автор: Старовъръ 8.10.2010, 18:35
Использование статических методов имеет те же недостатки, что и другие виды global state. Например, вызов System.getCurrentTime() или new Date() никак не замокать, если не применять моск smile Для таких объектов можно создать обертки (wrappers), которые будут то и делать, что вызывать вышеуказанные методы, однако передавая такие обертки в тестируемые объекты, мы можем сделать заглушки на них (моки).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)