2011-08-30 13 views
0

我在單元測試中使用鼴鼠重定向調用到日誌記錄應用程序塊(EntLib的包裝版本),它的工作方法但不是全部。鼴鼠重定向不工作

這是測試init方法,其中的代表越來越設置...

[TestInitialize()] 
    public void TestInit() 
    { 

    Common.Logging.Moles.MExceptionEvent.LogExceptionStringStringStringString = delegate(Exception ex, string a, string b, string c, string d) 
    { 
     Debug.WriteLine(String.Format("Exception occurred in test context '{0}' : {1} ", TestContext.TestName, ex.ToString())); 
    }; 

    Common.Logging.Moles.MCriticalEvent.LogStringStringTraceEventTypeStringString = delegate(string a, string b, TraceEventType tet, string c, string d) 
    { 
     Debug.WriteLine(String.Format("Critical Event occurred in test context '{0}' : {1} ", TestContext.TestName, a)); 
    }; 

    Common.Logging.Moles.MDebugEvent.LogStringStringTraceEventTypeStringString = delegate(string a, string b, TraceEventType tet, string c, string d) 
    { 
     Debug.WriteLine(String.Format("Debug Event occurred in test context '{0}' : {1} ", TestContext.TestName, a)); 
    }; 

} 

這是被重定向(從對象資源管理器)的方法簽名。

Public Shared Sub Log(exc As System.Exception, Optional sessionId As String = "", Optional msg As String = "", Optional encoreNamespace As String = "", Optional methodName As String = "") 
    Member of Common.Logging.ExceptionEvent 

Public Shared Sub Log(msg As String, Optional sessionId As String = "", Optional severity As System.Diagnostics.TraceEventType = Information, Optional encoreNamespace As String = "", Optional methodName As String = "") 
    Member of Common.Logging.CriticalEvent 

Public Shared Sub Log(msg As String, Optional sessionId As String = "", Optional severity As System.Diagnostics.TraceEventType = Information, Optional encoreNamespace As String = "", Optional methodName As String = "") 
    Member of Common.Logging.DebugEvent 

ExceptionEvent和CriticalEvent能夠正確登錄到重定向的輸出位置,但是DebugEvent不是。 DebugEvent調用會引發配置異常,因爲它試圖從配置文件加載日誌配置。

有沒有簡單的我失蹤了,還是應該這樣工作,因爲我已經寫了?

回答

0

原來不是上述代碼的直接問題。

我有一個[ClassInitialize]調用日誌記錄調用,並且始終在[TestInitialize]之前觸發。

將[TestInitialize]的內容移動到[ClassInitialize]的開頭可以解決問題。