我正在編寫一個單元測試套件來測試TCP/IP通信庫。如何在單元測試中處理後臺線程中的異常?
由於我使用BeginAcceptClient和EndAcceptClient,消息在後臺線程中接收。
收到消息後,我對它執行了一些斷言,但是如果斷言失敗,VSTestHost.exe崩潰。
我搜索了一下,發現它的事實是Assert異常在後臺線程中被拋出。
編輯:我在做什麼的樣本代碼,只是爲了ilustrate:
public void TestFooMessage() {
Server.OnReceive += (s, e) => {
Assert.IsInstanceOfType(e.Message, typeof(Foo));
};
var message = new Foo();
Client.Send(message);
}
有誰知道如何使它按預期工作:記錄斷言並繼續運行正常?
問題是線程是由被測系統創建的。你通常甚至不知道他們,除非你被回電話。單元測試中沒有通用的後臺線程解決方案。 – 2009-09-28 19:39:45
等待測試函數中的事件,並在異步回調中設置事件。 – 2009-09-28 19:53:43