Как проверить мой код обработки исключений в сокете?

2

У меня есть следующий код:

try
{
  mainSocket = new Socket(AddressFamily.InterNetwork, 
    SocketType.Stream, ProtocolType.Tcp);
  IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, serverPort);
  mainSocket.Bind(ipEndPoint);
  mainSocket.Listen(MAX_CONNECTIONS);
  mainSocket.BeginAccept(new AsyncCallback(serverEndAccept), mainSocket);
  OnNetworkEvents eventArgs = 
    new OnNetworkEvents(true, "Listening for Connection");
  OnUpdateNetworkStatusMessage(this, eventArgs);
}
catch (SocketException e)
{
  // add code here
}
catch (ObjectDisposedException e)
{
  // add code here
}

Как проверить код SocketException, если сервер все время успешно прослушивается?

  • 1
    Тот факт, что это помечено "е", заставило меня улыбнуться.
  • 0
    Вы можете вернуться к хмуриться сейчас. :)
Теги:
unit-testing
exception

4 ответа

2
Лучший ответ

Вручную введите SocketException изнутри блока try.

Как

throw new SocketException("Testing");
  • 0
    это работает, кроме «тестирования» должно быть число. Благодарю.
  • 5
    @ikurtz: просто запомните, если вы добавите это в свой код по сравнению с использованием условного для тестирования, вы должны удалить его и прочитать его всякий раз, когда вы захотите проверить снова. Где, если вы можете изменить файл конфигурации или использовать условную компиляцию, вы можете тестировать всякий раз, когда вам нужно, и тестировать все пути кода.
8

Не тестируйте живую сеть. Промойте сокет и протестируйте против макета, который выбрасывает SocketException.

3

Отключите сетевой кабель или отключите беспроводную сеть (при условии, что вы тестируете удаленный сервер).

3

вы можете добавить что-то вроде этого для тестирования:

#if (UNITTEST)

  throw new SocketException();
#endif

Затем в вашем компиляторе unit test просто определите эту переменную.

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

  • 0
    это крутой подход, за исключением того, что я новичок, и хотя я понимаю концепцию, мне придется изучить сеть, чтобы понять ее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню