我有一个需要使用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,我应该如何在单元测试中替换记录器。
答案 0 :(得分:1)
您正在使用静态工厂(LogManager),但非静态工厂可能会更好。然后你可以传入工厂本身,单元测试可以使用它创建自己的ILog对象。这样可以更容易模拟。
您仍然需要一种方法来制作工厂,但您可以传入一个检测测试版本来帮助进行测试。