Моль редирект не работает - PullRequest
0 голосов
/ 30 августа 2011

Я использую 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 генерирует исключение конфигурации, поскольку он пытается загрузить конфигурацию ведения журнала из файла конфигурации.

Есть что-то простое, чего мне не хватает, или это должно работать так, как я написал?

1 Ответ

0 голосов
/ 30 августа 2011

Оказалось, что нет прямой проблемы с приведенным выше кодом.

У меня был [ClassInitialize], который вызывал вызовы журналирования, и который всегда срабатывает до [TestInitialize].

Перемещение содержимого [TestInitialize] в начало [ClassInitialize] устранило проблему.

...