我有以下代码:
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
?
答案 0 :(得分:8)
请勿针对实时网络进行测试。模拟套接字并针对抛出SocketException
的模拟进行测试。
答案 1 :(得分:3)
你可以添加这样的东西进行测试:
#if (UNITTEST)
throw new SocketException();
#endif
然后在你的单元测试编译中定义该变量。
否则做一些强制异常的事情。就像有一个无效的配置设置,它不会让它连接用于你的单元测试代码。
答案 2 :(得分:3)
拔下网络电缆或关闭无线网络(假设您正在测试远程服务器)。
答案 3 :(得分:2)
从try块中手动抛出SocketException
。
像
throw new SocketException("Testing");