2011-08-30 8 views
0

단위 테스트에서 Moles를 사용하여 호출을 로깅 응용 프로그램 블록 (EnLib의 래핑 된 버전)으로 리디렉션하고 일부 메소드에 대해서는 작동하지만 전부는 아닙니다.두더지 리디렉션이 작동하지 않습니다.

이 대표는 설정을 받고 테스트 초기화 방법 ...

[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)); 
    }; 

} 

이 (개체 탐색기에서) 리디렉션하는 방법 서명입니다이다. ExceptionEvent 및 CriticalEvent 올바르게 재 출력 위치에 로그인 할 수 있습니다

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 

는, 그러나 DebugEvent 아니다. DebugEvent 호출은 구성 파일에서 로깅 구성을로드하려고 시도하기 때문에 구성 예외를 발생시킵니다.

내가 누락 된 단순한 내용이 있습니까? 아니면 작성한대로 작동해야합니까?

답변

0

위의 코드에 직접적인 문제가되지 않기 시작했습니다.

로깅 호출을 호출하는 [ClassInitialize]가 있는데 [TestInitialize] 전에 항상 발생합니다.

[TestInitialize]의 내용을 [ClassInitialize] 시작 부분으로 이동하면 문제가 해결됩니다.

관련 문제