Раздел конфигурации log4net для тестового проекта NUnit

StackOverflow https://stackoverflow.com/questions/159856

Вопрос

Я запускаю 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?

Это было полезно?

Решение

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

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

Другие советы

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

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

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

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>

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

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");
        }
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top