【问题标题】:Mole redirect not working鼹鼠重定向不起作用
【发布时间】:2011-08-30 14:20:22
【问题描述】:

我在单元测试中使用 Moles 将调用重定向到日志记录应用程序块(EntLib 的包装版本),它适用于某些方法但不是全部。

这是委托设置的测试初始化​​方法...

   [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 调用会引发配置异常,因为它试图从配置文件加载日志记录配置。

我缺少什么简单的东西,还是应该像我写的那样工作?

【问题讨论】:

    标签: c# unit-testing moles


    【解决方案1】:

    原来不是上面代码的直接问题。

    我有一个正在调用日志记录调用的 [ClassInitialize],它总是在 [TestInitialize] 之前触发。

    将 [TestInitialize] 的内容移动到 [ClassInitialize] 的开头解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2016-01-12
      相关资源
      最近更新 更多