从AppenderSkeleton注入Derived Appender中的依赖关系

时间:2018-01-15 16:50:46

标签: c# unit-testing dependency-injection moq log4net-appender

我正在我们的应用程序中实现Log4net并进行日志记录我正在实现 AppenderSkeleton

由于log4net使用配置设置解析其appender,我无法将自定义服务指定为使用构造函数或属性注入的依赖项。

我之所以这样做是因为我希望我的appender能够使用MOQ框架进行单元测试。

以下是我想要实现的代码示例。

public class LoggingAppender : AppenderSkeleton
{
    private ICustomService service;
    public LoggingAppender(ICustomService service)
    {
        this.service = service;
    }
    protected override void Append(log4net.Core.LoggingEvent loggingEvent)
    {
        service.Method("Data From loggingEvent");
    }
}

我还在stackoverflow找到了以下答案。但它不适合我的目的。

这个问题是否有任何解决方案,还是我们应该采用其他方法对其进行单元测试?

1 个答案:

答案 0 :(得分:0)

@AshutoshSingh在这种情况下我建议在运行时添加appender。请参阅How to add log4net appender in runtime?(请注意,您可以注册appender,而不仅仅是那个)。

另外,您可以为ILogger添加工厂注册,这将在解析时添加appender,作为选项(参见Castle Windsor: How do I register a factory method, when the underlying type isn't accessible to my assembly?)。

在任何情况下,通过遵循该引用,您将获得一些可以使用的信息。

PS:没有足够的声誉在原帖中回复:-)所以会在这里发表回答: - )