我有一个继承简单日志接口的类。此接口的实现之一使用 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() 方法是否只被调用一次。静态变量和静态方法与作为构造函数一部分的逻辑相结合,使得这很棘手。
感觉是我的代码很差,有没有办法可以编写此代码,以便配置调用只调用一次,然后,我该如何测试它?