使用单元测试通过依赖注入和隐式依赖进行日志记录

时间:2013-03-21 18:00:07

标签: c# log4net

我有一个需要使用Log4net进行日志记录的类。以下是两种可能的解决方案,包括单元测试。

解决方案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,我应该如何在单元测试中替换记录器。

1 个答案:

答案 0 :(得分:1)

您正在使用静态工厂(LogManager),但非静态工厂可能会更好。然后你可以传入工厂本身,单元测试可以使用它创建自己的ILog对象。这样可以更容易模拟。

您仍然需要一种方法来制作工厂,但您可以传入一个检测测试版本来帮助进行测试。