6

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

TestFixtureSetupで、log4net.Config.XmlConfigurator.Configure()を呼び出していますが、次のエラーが発生します。

System.Configuration.ConfigurationErrorsException:構成システムの初期化に失敗しました---> System.Configuration.ConfigurationErrorsException:認識されない構成セクションlog4net。(C:\ path \ to \ assembly.dll.config行7)

構成ファイルの名前を「AssemblyTest.config」に変更せずにこれを修正する方法はありますか?

4

3 に答える 3

11

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

したがって、log4net 要素をapp.configに入れたい場合は、configSections要素 ( log4net要素が定義されている場所を示す) を構成ファイルの先頭に含める必要があります。

次のようにしてみてください。

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>
于 2012-01-27T10:58:03.037 に答える
6

皆さんが構成ファイルに閉じ込められている理由がわかりません。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");
        }
    }
于 2013-10-30T02:17:01.173 に答える
4

ルート要素log4netを使用してlog4net用の個別の構成ファイルを作成します。

TestFixtureSetupで、この構成ファイルのFileInfoオブジェクトを作成し、log4net.Config.XmlConfigurator.Configure()への引数として指定します。

于 2008-10-02T14:44:09.680 に答える