2011-08-30 16 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]的开头可以解决问题。