2014-03-26 76 views
0

我實現了一個API來處理EventLogRecord對象。爲單元測試創​​建EventLogRecord

using System.Diagnostics.Eventing.Reader; 

... 
MyLog ProcessEvent(EventLogRecord eventRecord) 

現在,我想爲此創建單元測試,並且EventLogRecord沒有公共構造函數。如何獲取EventLogRecord對象而無需連接到事件日誌記錄系統?

回答

0

製作像這樣(非虛擬)工作的不可測項目的標準方法是使用包裝。這裏是思想的一些pseducode:

WrapperEventLogRecord : IEventLogRecordWrapper 
{ 
    ctor(EventLogRecord eventLogRecord) 
    public ActivityId {get{return _eventLogRecord.ActivityId;}} 
} 

現在你可以通過在界面上,並根據需要

+0

大嘲笑吧!包裝將解決問題。任何其他選項?我有點擔心開銷(更多的代碼只是爲了包裝)。 – Icerman

+0

如果你正在使用一個基本的模擬框架,那麼沒有。看到我這裏沒有答案的問題:http://stackoverflow.com/questions/17203061/is-a-wrapper-the-only-way-to-test-a-static-dependency你可以使用像TypeMock這樣強大的模擬器來獲取私人的ctor,但? –