Привет Stackoverflowers,
У меня есть приложение, в котором существует уровень абстракции связи.Каждая реализация на этом уровне, называемая соединитель , предоставляет моему приложению способ обмена данными с подключенным одноранговым узлом (например, через HTTP, TCP-сокеты, UDP-сокеты и т. Д.).
Например, у меня есть класс Connector_Tcp
, который реализует такие методы, как read , write , open и close .
Мне нужно написать модульный тест для этого класса.Я знаю, что модульные тесты должны иметь как можно меньше зависимостей.К сожалению, в этом случае зависимость - это системный ресурс: сокет;и я не могу обойти его.
Мне нужен совет о том, как проводить модульное тестирование этого класса.
По моему мнению, хотя этот класс использует системуресурс, он должен быть протестирован как и все остальные коннекторы , чтобы убедиться, что он соответствует стандарту, установленному моим приложением.
Я обеспокоен такими вещами, как конфликты привязки ( Addressуже используется ошибок) и блокировка.Я не хочу, чтобы модульный тест не прошел, потому что порт уже используется системной службой, которая не имеет никакого отношения к моему приложению.
Я провел много модульных тестов в свое время, но ни одиниз которых зависит от такого низкоуровневого ресурса, который представляет собой сокеты.
Как бы вы провели модульное тестирование класса, зависящего от сокета?Открыть сокет для каждого устройства?Используйте один класс сервера, а затем вручную определенный ресурс сокета, чтобы подключиться к нему и проверить его ...?
Полагаю, моя проблема действительно заключается в следующем:
Если модульный тест не пройден ... как узнать, что:
- Сокет уже используетсядругим процессом;
- плохо написан модульный тест;или
- Метод ведет себя некорректно (чего стоит модульный тест).
Мне нужен модульный тест для проверки, только если метод работает правильно илинет ...