NUnitテストプロジェクトのlog4net構成セクション
-
03-07-2019 - |
質問
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");
}
}
所属していません StackOverflow