NUnitからlog4netを使うライブラリを使う場合

常識なのか知らないけど、log4netでログを吐くアセンブリAを、NUnitテスト用アセンブリBから参照して使うような場合の注意。

B.config に log4net の設定を行うだけでは、その内容を読んでくれないらしく、ログが出力されない。

期待通りログが吐かれるようにするには、Bに

[SetUpFixture]
public class SetupClass
{
    [SetUp]
    public void RunBeforeAnyTests()
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}

のようなものを追加して、テスト前に明示的に B.config を読んでlog4net設定が行われるようにする必要があるらしい。

コンソールアプリケーションCからAを使うようなケースでは C.config に log4net の設定をするだけでいいので、何故NUnitではだめなのかわからず、微妙にハマった。

参考: Logging with log4net and NUnit