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