Написание модульных тестов для классов, связанных с сетью - PullRequest
2 голосов
/ 25 июня 2009

У меня есть класс, который отвечает за сетевое общение. Я хотел бы провести для него юнит-тест.

Вот где я застрял, чтобы написать тест, и мне нужно реализовать сервер для связи, но для этого, в свою очередь, потребуется собственный тест.

Как вы пишете тесты для такого класса?

Ответы [ 2 ]

6 голосов
/ 25 июня 2009

Если вы не пишете драйверы низкого уровня, ваш класс, несомненно, зависит от других классов, чтобы осуществлять фактическую связь. В этом случае я бы использовал внедрение зависимостей для предоставления этих классов или оберток вокруг них, если их нелегко высмеивать. В ваших тестах вы предоставляете фиктивную версию классов, от которых вы зависите (или обертки, если вы не можете насмехаться над реальными классами). Убедитесь, что правильные методы с правильными параметрами вызываются вашими методами на предоставленных вами макетах. Убедитесь, что у вас достаточно модульных тестов, чтобы убедиться, что вы охватили весь диапазон поведения из реальных зависимостей. Этого будет достаточно для ваших юнит-тестов.

Вам также понадобятся некоторые интеграционные тесты. К сожалению, самый простой способ сделать это, вероятно, - разработать полноценный макет-сервер для связи. Обратите внимание, что ваш фиктивный сервер должен реализовывать только интерфейс, а не реальный код на другом конце. Предоставьте несколько дополнительных методов, которые позволят вам настроить сервер для ваших интеграционных тестов так, чтобы происходило ожидаемое поведение с фиктивным сервером.

1 голос
/ 25 июня 2009

Если вы единица проходите тестирование в классе, отвечающем за сетевое взаимодействие, то вы только проверяете, что вы делаете связь правильно. Поэтому предоставьте фиктивный (как, например, фиктивный) сервер для связи с ним. Существует много библиотек, которые вы можете использовать, таких как EasyMock и jMockit. Если вы хотите проверить фактическую связь с реальным сервером, тогда это интеграция -тестирование. Конечно, точное определение того, что включает в себя юнит-тестирование, варьируется от разработчика к разработчику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...