Question

J'utilise NUnit avec le projet nommé AssemblyTest.nunit. Le test appelle un autre assembly qui utilise l'assembly log4net. Ceci utilise nunit version 2.4.3 avec le framework .net 2.0.

Dans TestFixtureSetup, j'appelle log4net.Config.XmlConfigurator.Configure () et j'obtiens le message d'erreur suivant:

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

Existe-t-il un moyen de résoudre ce problème sans renommer le fichier de configuration en "AssemblyTest.config"?

Était-ce utile?

La solution

Créez un fichier de configuration séparé pour log4net avec l'élément racine log4net.

Dans TestFixtureSetup, créez un objet FileInfo pour ce fichier de configuration et donnez-le en argument à log4net.Config.XmlConfigurator.Configure ().

Autres conseils

J'ai eu le même problème car j'ai oublié d'ajouter la définition log4net dans l'élément configSections .

Ainsi, si vous souhaitez insérer des éléments log4net dans le fichier app.config, vous devez inclure l'élément configSections (qui indique où log4net -éléments sont définis) en haut du fichier de configuration.

Essayez comme ça:

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

Je ne sais pas pourquoi vous êtes pris au piège dans des fichiers de configuration. Si vous souhaitez voir les journaux s'exécuter dans la fenêtre de sortie de texte dans nunit test runner, il vous suffit de suivre la ligne de code suivante,

BasicConfigurator.Configure();

meilleur point ajouter cette ligne est le constructeur de la classe Test

par exemple.

[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");
        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top