Сокеты для модульного тестирования

Приветствую, Stackoverflowers,

У меня есть приложение, в котором существует уровень коммуникационной абстракции. Каждая реализация на этом уровне, называемая коннектором , предоставляет моему приложению способ обмена данными с подключенным одноранговым узлом (например, через HTTP, сокеты TCP, сокеты UDP и т. Д.).

Для примера , У меня есть класс Connector_Tcp , который реализует такие методы, как read , написать , открыть и закрыть .

Мне нужно написать модульный тест для этого класса. Я знаю, что у модульных тестов должно быть как можно меньше зависимостей. К сожалению, в этом случае зависимость - это системный ресурс: сокет; и я не могу его обойти.

Мне нужен совет о том, как провести модульное тестирование этого класса.

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

Меня беспокоят такие вещи, как конфликты привязки ( Адрес уже используется, ошибки) и блокировки. Я не хочу, чтобы модульный тест завершился неудачно, потому что порт уже используется системной службой, которая не имеет ничего общего с моим приложением.

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

Как бы вы подали модульное тестирование класса, зависящего от сокета? Открыть розетку для каждого устройства? Использовать один класс сервера, а затем вручную определенный ресурс сокета для подключения к нему и тестирования ...?

Думаю, моя проблема в следующем:

Если модульный тест завершился неудачно ... как мне узнать, что:

  • Сокет уже используется другим процессом;
  • Модульный тест плохой написано; или
  • Метод ведет себя неправильно (чего стоит модульный тест).

Мне нужен модульный тест для проверки, только если метод ведет себя должным образом или нет ...

10
задан netcoder 28 December 2010 в 06:22
поделиться