如何使用log4net进行TDD?

dev*_*per 3 c# tdd logging log4net

我正在尝试做TDD,我不清楚如何为我编写的记录逻辑做这件事.

Fox的例子,对于以下内容的测试是什么:

  if(importantCriteriaNotMet)
  {
     log.Info("My message here");
  }
Run Code Online (Sandbox Code Playgroud)

我该如何测试该日志代码?我应该测试一下吗?

Be.*_*St. 10

如果log是ILog类型:

  • 模拟你的ILog界面
  • 注入你的模拟对象
  • 断言当importantCriteriaNotMet为true时调用log.Info

  • 如果log4net工作,请不要打扰测试.如果您配置正确,它会这样做.即使它在您的单元测试中工作,如果您努力并检查日志文件或类似文件,也不能保证它在您的生产环境中有效. (2认同)

Gle*_*enn 6

Log4Net:如果我没记错的话,Logger实现了一个名为ILog的接口.使用像Moq这样的模拟框架并创建一个模拟的ILog实例.

然后,您设计您的类以在构造函数中获取ILog实例.使用类似的设计,在运行测试时运行系统和模拟实例时,可以为类提供具体实现.

您可以使用以下代码验证我是否正确完成了日志记录:

mockedLogger.Verify(l=>l.Log("The message that should be logged"),Times.Once)
Run Code Online (Sandbox Code Playgroud)

如果你想学习TDD嘲笑是你的朋友.