質問

AssemblyTest.nunitという名前のプロジェクトでNUnitを実行しています。テストは、log4netアセンブリを使用する別のアセンブリを呼び出します。これは、.net 2.0フレームワークでnunitバージョン2.4.3を使用しています。

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()の引数として指定します。

他のヒント

configSections 要素に log4net 定義を追加するのを忘れたため、同じ問題が発生しました。

したがって、 log4net 要素をapp.configに配置する場合は、 configSections 要素( log4net 要素が定義されています)構成ファイルの上部。

次のように試してください:

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

nunitの設定ファイルに閉じ込められている理由がわかりません。nunitのテストランナーの[テキスト出力]ウィンドウで実行されているログを確認したい場合は、コード行に従うだけです

BasicConfigurator.Configure();

このポイントを追加するベストポイントは、Testクラスのコンストラクタです

e.g。

[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