使用LibLog时,是否可以断言对记录器的调用?鉴于wiki列出了以下用法示例:
public class MyClass
{
private static readonly ILog Logger = LogProvider.For<MyClass>();
}
Run Code Online (Sandbox Code Playgroud)
这里的记录器是一个隐藏在消费者手中的实现细节,这是使用这个库的最大好处.这样库消费者就不必担心如何实例化记录器.看看这篇博文:
http://dhickey.ie/2015/06/capturing-log-output-in-tests-with-xunit2/
似乎添加了大量的锅炉板以捕获日志输出,我不完全确定该方法,因为它在单元测试中也使用了重定向的Serilog输出,这看起来很奇怪,因为库应该只依赖关于日志抽象?
我目前唯一能想到的选择是:
注入记录器 - 这对于库的使用者来说可能是奇怪的,然后每个库都会带有它自己的ILogger
需要注入的定义,从而破坏了抽象的优点.
连接到真实的日志记录框架 - 将LibLog的当前LogProvider设置为使用Log4Net或类似,然后以某种方式尝试将模拟/存根记录器注入Log4Net,并通过代理断言调用.
任何相对简单的断言对记录器的调用的方法都会受到赞赏,但我怀疑并行测试执行会导致问题,即使可以在上面的记录器上断言调用?