У меня есть следующий код:
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
, если сервер все время успешно прослушивается?
Вручную введите SocketException
изнутри блока try.
Как
throw new SocketException("Testing");
Не тестируйте живую сеть. Промойте сокет и протестируйте против макета, который выбрасывает SocketException
.
Отключите сетевой кабель или отключите беспроводную сеть (при условии, что вы тестируете удаленный сервер).
вы можете добавить что-то вроде этого для тестирования:
#if (UNITTEST)
throw new SocketException();
#endif
Затем в вашем компиляторе unit test просто определите эту переменную.
В противном случае сделайте что-нибудь, чтобы вызвать исключение. Как и недопустимый параметр конфигурации, который не позволит подключиться для использования с вашим кодом unit test.