4

MemoryAppender単体テストでログ メッセージを読み取るために を使用しています。

私はBasicConfigurator次の方法で使用しています:

    class LogVerifier 
    { 
      private MemoryAppender m_appender; 
      public LogVerifier() 
      {
          m_appender = new MemoryAppender(); 
          BasicConfigurator.Configure(m_appender); 
      }

    //other stuff 

    }

したがって、このクラスのオブジェクトは、単体テストごとに作成されます。この静的クラスBasicConfiguratorが m_appender への参照を保持しているかどうかを確認しようとしました。これはm_appender、使用するたびに破棄したいためです。

これを達成する方法について誰にも手がかりがありますか?

ありがとう、

ダン

4

1 に答える 1

2

イベントがlog4netに書き込まれている(または書き込まれていない)に基づいてアサーションを行うnUnitテストがいくつかあります。私はこの分解コードを使用していますが、うまく機能します。

[TestFixtureTearDown]
protected void TeardownLogging()
{
    if (m_appender != null)
    {
        m_appender.Clear();
        m_appender.Close();
    }
    m_appender = null;

    var appenders = ((log4net.Repository.Hierarchy.Hierarchy) LogManager.GetRepository()).Root as log4net.Core.IAppenderAttachable;
    appenders.RemoveAllAppenders();
}
于 2014-12-16T22:09:43.450 に答える