Pergunta

Estou executando o NUnit com o projeto chamado AssemblyTest.nunit. O teste de chama outra montagem que utiliza o log4net montagem. Esta é usando nunit versão 2.4.3 com o .NET Framework 2.0.

Em TestFixtureSetup estou chamando log4net.Config.XmlConfigurator.Configure () e estou recebendo o seguinte erro:

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

Existe uma maneira de corrigir isso sem mudar o nome do arquivo de configuração para 'AssemblyTest.config'?

Foi útil?

Solução

Criar um arquivo de configuração separado para log4net com elemento raiz log4net.

Em TestFixtureSetup criar um objeto FileInfo para este arquivo de configuração e dá-la como argumento para log4net.Config.XmlConfigurator.Configure ().

Outras dicas

Eu tive o mesmo problema, porque eu esqueça de adicionar o log4net definição no configSections elemento.

Então, se você quiser colocar log4net -elements para o app.config, você precisa incluir o configSections elemento (que diz onde log4net -elements são definidos) na parte superior do arquivo de configuração.

Tente assim:

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

Eu não sei porque vocês estão presos em arquivos de configuração, para nunit se você gostaria de ver registros em execução na janela de saída de texto no corredor de teste nunit tudo o que você precisa fazer é seguir linha de código,

BasicConfigurator.Configure();

melhor ponto de adicionar esta linha é o construtor da classe de teste

por exemplo.

[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");
        }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top