-1

我有一个类需要使用 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,我应该如何在单元测试中替换记录器。

4

1 回答 1

1

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

您仍然需要一种制造工厂的方法,但您可以传递一个仪器化的测试版本来帮助进行测试。

于 2013-03-21T18:24:03.240 回答