【发布时间】:2010-07-09 13:29:19
【问题描述】:
我有一个直接使用“System.Net.Sockets.Socket”进行网络通信的类,目前我使用以下两个接口来打破对 Socket 类的依赖:
public interface ISocketListener
{
void Listen(int backlog);
ISocket Accept();
void Bind(EndPoint endpoint);
}
public interface ISocket
{
void Connect (EndPoint ep);
Stream CommunicationStream { get; }
void Close();
void Close(int timeout);
void Shutdown();
}
在生产实现中,我只是将所有方法调用重定向到私有 Socket 对象。在测试环境中,我使用 MemoryStream 作为套接字之间的通信“管道”。 由于我在这方面的经验很少,在编写测试时我的脑海中出现了一些问题:在测试这种软件时是否有任何“正式”的良好实践?在做集成测试时,我如何测试这个服务器在多连接/高延迟情况下的性能(更具体地说,如何模拟这些情况)?为什么会有 Socket.Accept/Socket.Receive 的异步版本?我可以替换异步方法以在单独的线程中处理它们的同步版本吗?
【问题讨论】: