【发布时间】:2018-01-15 16:50:46
【问题描述】:
我正在我们的应用程序中实现 Log4net,对于日志记录,我正在实现 AppenderSkeleton。
由于 log4net 使用配置设置解析其附加程序,我无法将我的自定义服务指定为使用构造函数或属性注入的依赖项。
我想这样做是因为我希望我的 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 上找到了以下答案。但这对我来说没有用。
这个问题有什么解决方案,还是我们应该遵循任何其他方法来对其进行单元测试?
【问题讨论】:
-
我猜由于构造函数注入不可用,属性注入将是@IgorGnedysh 提供的链接所建议的潜在解决方案。
-
让我看看它与 Windsor Castle DI 容器的匹配度。
-
@Nkosi 不能使用温莎城堡 stackoverflow.com/questions/851940/…
-
@AshutoshSingh 那么您剩下的就是重新设计类以使用抽象工厂方法,该方法使用服务定位器反模式或纯 DI stackoverflow.com/a/30807022/5233410
标签: c# unit-testing dependency-injection moq log4net-appender