你的應用程序使用DataReceivedEventArgs的數據是什麼?
您的最佳解決方案可能是將DataReceivedEventArgs與可以將數據注入到測試中的類打包,然後將其傳遞給實現方法,而不是在當前事件處理程序中執行所有工作。
讓我給你看。首先,創建自定義包裝類:
internal class CustomDataReceivedEventArgs : EventArgs
{
public string Data { get; set; }
public CustomDataReceivedEventArgs(string _Data)
{
Data = Data;
}
public CustomDataReceivedEventArgs(DataReceivedEventArgs Source)
{
Data = Source.Data;
}
}
接下來,將事件處理程序impelmentation到新的方法:
private void NetErrorDataHandler_Implementation(object sendingProcess,
CustomDataReceivedEventArgs errLine)
{
//Your actual event handling implementation here...
}
最後,設置你的事件處理程序做什麼,但調用新的方法:
:現在
private void NetErrorDataHandler(object sendingProcess,
DataReceivedEventArgs errLine)
{
NetErrorDataHandler_Implementation(sendingProcess,
new CustomDataReceivedEventArgs(errLine));
}
,你可以通過調用您的實現這樣的測試執行
NetErrorDataHandler_Implementation(new object(),
new CustomDataReceivedEventArgs("My Test Data"));
對不起,纏上類。那個怎麼樣?實際上,我們的類正在訂閱DataReceivedEventHandler,正如您從代碼中看到的一樣。所以它期待具體的方法簽名來訂閱。即使datareceivedEventArgs被封裝,如果數據屬性爲只讀,它總是空白,我該如何使用它? – 2009-08-30 17:11:23
如果沒有其他想法,我會將其標記爲解決方案。但我不喜歡它來測試你將需要添加特殊的方法簽名,它將與CustomDataReceivedEventArgs一起提供一些數據。但使用數據的方式是公共接口。我不想爲了測試目的而改變它。所以它會測試我的實現,但我需要爲此創建一個特殊方法並將其公開。 – 2009-08-30 17:35:43
我明白,這只是一個快速和骯髒的方式來解決不可修復的數據問題,同時對現有類進行很少的更改。 – 2009-08-30 17:57:13