Раздел конфигурации log4net для тестового проекта NUnit - PullRequest
5 голосов
/ 02 октября 2008

Я использую NUnit с проектом AssemblyTest.nunit. Тест вызывает другую сборку, которая использует сборку log4net. Это использует nunit версии 2.4.3 с платформой .net 2.0.

В TestFixtureSetup я звоню log4net.Config.XmlConfigurator.Configure () и получаю следующую ошибку:

System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section log4net. (C:\path\to\assembly.dll.config line 7)

Есть ли способ исправить это без переименования файла конфигурации в AssemblyTest.config?

Ответы [ 3 ]

10 голосов
/ 27 января 2012

У меня была такая же проблема, потому что я забыл добавить определение log4net в элемент * configSections .

Итак, если вы хотите поместить log4net -элементы в app.config, вам необходимо включить элемент configSections (который сообщает, где log4net - элементы определены) в верхней части файла конфигурации.

Попробуй так:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>
5 голосов
/ 30 октября 2013

Я не знаю, почему вы, ребята, оказались в ловушке в файлах конфигурации, для nunit, если вам нравится видеть журналы, работающие в окне Text Output в nunit test runner, все, что вам нужно сделать, это выполнить следующую строку кода,

BasicConfigurator.Configure();

Лучше всего добавить эту строку в конструктор класса Test

например.

[TestFixture]
    public class MyTest
    {
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyTest));

        public MyTest()
        {
            BasicConfigurator.Configure();
        }

        [SetUp]
        public void SetUp()
        {
           log.Debug(">SetUp");               
        }

        [TearDown]
        public void TearDown()
        {
            log.Debug(">TearDown");
        }

        [Test]
        public void TestNothing()
        {
            log.Debug(">TestNothing");
        }
    }
4 голосов
/ 02 октября 2008

Создайте отдельный файл конфигурации для log4net с корневым элементом log4net.

В TestFixtureSetup создайте объект FileInfo для этого файла конфигурации и передайте его в качестве аргумента log4net.Config.XmlConfigurator.Configure ().

...