我正在研究一个侦听TCP连接的网络代码,解析传入的数据并引发相应的事件.当然,为了避免阻塞应用程序的其余部分,监听和解析是在后台工作程序中执行的.当试图对这段代码进行单元测试时,我遇到的问题是,由于网络代码比单元测试有更多工作要做,因此单元测试在适配器有机会引发事件之前完成,因此测试失败.
适配器类:
public class NetworkAdapter : NetworkAdapterBase //NetworkAdapterBase is just an abstract base class with event definitions and protected Raise... methods.
{
//Fields removed for brevity.
public NetworkAdapter(TcpClient tcpClient)
{
_tcpConnection = tcpClient;
//Hook up event handlers for background worker.
NetworkWorker.DoWork += NetworkWorker_DoWork;
if (IsConnected)
{
//Start up background worker.
NetworkWorker.RunWorkerAsync();
}
}
private void NetworkWorker_DoWork(object sender, DoWorkEventArgs e)
{
while (IsConnected)
{
//Listen for incoming data, parse, raise events...
}
}
}
Run Code Online (Sandbox Code Playgroud)
试图测试代码:
[TestMethod]
public void _processes_network_data()
{
bool …Run Code Online (Sandbox Code Playgroud)