-1

Log4net を使用してログを記録する必要があるクラスがあります。以下は、単体テストを考慮した 2 つの解決策です。

解決策 1:

public class Car{
  ILog log;
  public Car(ILog log){
  this.log = log
  }

   //use logging for other methods
}

解決策 2:

public class Car
  ILog log = LogManager.GetLogger(typeof(Car));
  public Car(){
  }

   //use logging for other methods
}

質問:

1) 一般的にはどちらの方法が良いですか?

2) 解決策 2 の場合、単体テストでロガーをどのように交換すればよいですか。

4

1 に答える 1

1

静的ファクトリ(LogManager)を使用していますが、非静的ファクトリの方が適している可能性があります。次に、ファクトリ自体を渡すことができ、単体テストはそれを使用して独自のILogオブジェクトを作成できます。これにより、モックが簡単になります。

ファクトリを作成する方法はまだ必要ですが、テストを支援するためにインストルメント化されたテストバージョンを渡すことができます。

于 2013-03-21T18:24:03.240 に答える