【发布时间】:2013-04-02 03:19:52
【问题描述】:
我有一个类继承了一个简单的日志接口。该接口的实现之一使用 log4net。
Log4net 有一个静态配置方法,需要在您使用 XML 配置时调用。该行是:
log4net.Config.XmlConfigurator.Configure();
文档通常声明将其放入全局事件中,但我想将所有 log4net 代码封装到这一类中。所以我只是简单地使用静态变量来跟踪 log4net 是否已经配置,如果没有,我调用这个方法:
//This is static as I only ever want one instance
private static log4net.ILog _logger;
private static bool _isConfigured;
public Log4NetLogger() {
if(!_isConfigured) {
//This is needed to initialise the Log4Net logger
log4net.Config.XmlConfigurator.Configure();
_isConfigured = true;
_logger = log4net.LogManager.GetLogger(_defaultLogger);
}
}
问题是我不知道如何测试它。我希望能够测试 Configure() 方法是否只被调用一次。静态变量和静态方法与作为构造函数一部分的逻辑相结合,让这变得很棘手。
感觉是我的代码不好,有没有办法可以编写此代码,以便只调用一次配置调用,然后,我该如何测试它?
【问题讨论】:
标签: .net unit-testing static log4net