Моделирование последовательностей данных через InputStream и OutputStream

Я разработал класс Java, который реализует некоторый серверный протокол. Например, у него есть метод getProtocolVersion(), который возвращает последнюю версию протокола. Объект этого класса подключается к серверу через реализации InputStream и OutputStream.

У меня есть тест с заглушками для каждой команды сервера. Каждый тест создает ByteArrayInputStream и ByteArrayOutputStream с ожидаемыми клиентскими запросами и ответами сервера, поэтому я могу выполнять логическое модульное тестирование реализации моего протокола с помощью JUnit. Это работает, но создавать фикстуру (подготавливать данные) для каждого теста команды слишком скучно.

Действительно ли использовать насмешки в моем случае? Является ли это решение менее сложным? Как имитировать последовательности данных через потоки ввода и вывода?


person Community    schedule 17.10.2011    source источник
comment
Что вы имеете в виду под «Действительно ли использовать насмешки в моем случае?» Это действительно что?   -  person Jon Skeet    schedule 17.10.2011
comment
Последовательности основаны на тексте. new ByteArrayInputStream(text.getBytes());   -  person Peter Lawrey    schedule 17.10.2011
comment
Питер, мои последовательности содержат необработанные байты и строки в кодировке UTF-8.   -  person    schedule 17.10.2011
comment
Джон, я имею в виду, как имитировать реализации InputStream и OutputStream (последовательности данных через эти потоки).   -  person    schedule 17.10.2011


Ответы (1)


Вы можете обернуть Streams в объект, который легче создать и использовать. Это может служить для сквозных тестов.

Для модульных тестов вы можете извлечь логику в методы, которые можно тестировать независимо друг от друга, без необходимости настраивать сложную фикстуру.

person Garrett Hall    schedule 20.10.2011