C# 异步调用的单元测试
在异步编程进行单元调试的时候,由于主线程在反馈之前就可能会执行完毕,导致还未接受到反馈整个执行域就销毁了。需要阻塞当前线程,等待异步反馈完成。
一个简单的办法如下:
[TestMethod] public void TestAsynResponse() { OdaLibSeiviceCommand.Instance.GetBaidu( ( obj, e ) => { using ( e.Result ) { using ( StreamReader sr = new StreamReader( e.Result ) ) { Assert.IsNotNull( sr.ReadToEnd().Length > 0 ); sr.Close(); } e.Result.Close(); } i++; } ); WatiCallback(); } private void WatiCallback() { while ( i == 0 ) { System.Threading.Thread.Sleep( 1000 ); } } private int i = 0;