通过依赖注入与使用单元测试的隐式依赖进行日志记录
本文关键字:依赖 日志 记录 单元测试 注入 | 更新日期: 2023-09-27 18:05:23
我有一个需要使用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)一般来说哪一种方式更好?
您正在使用静态工厂(LogManager),但非静态工厂可能更好。然后您可以传入工厂本身,单元测试可以使用它创建自己的ILog对象。这使得mock更容易。
您仍然需要一种方法来创建工厂,但是您可以传入一个仪表化的测试版本来帮助进行测试。