Оболочка log4net не регистрируется (во время UT MSTest) - PullRequest
2 голосов
/ 18 октября 2011

У меня есть класс-оболочка для log4net для входа между несколькими классами и сборками внутри группы dll-библиотек.(Это может быть плохой дизайн, но .. не спрашивайте) Код в основном выглядит следующим образом:

public static class Logger
{
    private static ILog log;

    static Logger()
    {
        log = LogManager.GetLogger("abcd");
        XmlConfigurator.Configure(new FileInfo("LoggerConfig.log4net"));
        log.Info("=== NEW SESSION ===");
    }

    public static void Log(string message)
    {
        log.Debug(message);
    }
}

Теперь .. если статический конструктор был основной статической подпрограммой простого исполняемого файла, это работаетотлично (я быстро сделал консольное приложение для тестирования).Но здесь это не так.Поскольку я имею дело с автономными сборками, а не с исполняемыми файлами, единственный способ, которым я могу легко протестировать регистратор, - через MSTest.Это может быть причиной этой проблемы.Я не уверен на 100%, может быть, он просто не может найти файл конфигурации.Он копируется при компиляции и находится в той же папке, что и сборка, содержащая класс logger, поэтому я думаю, что это должно сработать.

bleh .. застрял на три часа.: T какие-либо предложения?

Ответы [ 4 ]

5 голосов
/ 18 октября 2011

Мой экстрасенсорный отладчик говорит, что ваш LoggerConfig.log4net находится не в правильном каталоге.Он не развернут в вашем тестовом каталоге и не найден при запуске теста.Вот почему нет вывода журнала.Разверните файл в тестовом каталоге, и вы получите запись в журнал.

РЕДАКТИРОВАТЬ: Точнее, вам нужно добавить его в качестве файла развертывания в разделе Тест-> Изменить параметры теста - >> Развертывание (как описано здесь: Как заставить "Копировать в выходной каталог" для работы с модульными тестами? )

0 голосов
/ 18 октября 2011

Log4net использует конфиги в App.config?Попытаться поместить их также в тестовую библиотеку?

Я знаю проблему по Приложению со многими библиотеками, и де-конфиг должен быть только в Main-Application.

0 голосов
/ 18 октября 2011

MsTest shadow копирует вещи повсюду, и, как говорят пэр и Хинек, возможно, проблема в расположении файла. Я считаю, что включение файлов в тестовую сборку - один из способов обойти это.

Проверьте предыдущий ответ здесь для подробностей.

0 голосов
/ 18 октября 2011

Вы пытались ссылаться на файл конфигурации по абсолютному пути?Может быть, корневой каталог для MSTests отличается от корневого каталога Консольного приложения?

...