【发布时间】:2017-01-09 10:06:27
【问题描述】:
使用 LibLog 时,是否可以断言对记录器的调用?鉴于 wiki 列出了以下使用示例:
public class MyClass
{
private static readonly ILog Logger = LogProvider.For<MyClass>();
}
这里的记录器是对消费者隐藏的实现细节,这是使用这个库的最大好处。这样库使用者就不必担心记录器是如何实例化的。查看这篇博文:
http://dhickey.ie/2015/06/capturing-log-output-in-tests-with-xunit2/
似乎添加了很多样板来捕获日志输出,我不完全确定该方法,因为它还在单元测试中使用了重定向的 Serilog 输出,考虑到库,这似乎很奇怪应该只依赖于日志抽象吗?
我目前能想到的唯一选择是:
注入记录器 - 这对于库的使用者来说可能很奇怪,然后每个库都会携带它自己的需要注入的 ILogger 定义,从而破坏了抽象的优势。
连接到真正的日志框架 - 为 LibLog 设置当前的 LogProvider 以使用 Log4Net 或类似的,然后以某种方式尝试将模拟/存根 Logger 注入 Log4Net,并通过代理断言调用。
任何相对简单的方法来断言对记录器的调用都会受到赞赏,但我怀疑并行测试执行会导致问题,即使可以在上述记录器上断言调用?
【问题讨论】:
-
你需要什么来测试通话记录?通常不需要。
-
@Artiom 为什么不需要它?什么样的测试涵盖了日志记录?
-
我的任何项目都没有这种需求。这就是我问的原因。
标签: c# unit-testing liblog