在单元测试下运行时,log4net无法找到线程ID

时间:2012-05-30 16:36:28

标签: unit-testing log4net mstest

我有log4net,它写的条目如下:

<conversionPattern value="[%date{yyyy-MM-dd HH:mm:ss}] [%property{machineName}] [%property{pid}] [%thread] [%-5level]: %message%newline"/>

除了运行单元测试外,一切正常。如果我不模拟记录器并且测试使用真实对象,那么我将获得

而不是threadId
Agent: adapter run thread for test 'Log4NetLogger_TestLoggingMachineNamePrinted' with id '84e27809-f2b8-45b4-a2e1-ce305d20bc0c'

很明显,log4net在从测试运行器中使用时会感到困惑。如果我正常运行应用程序,那么我得到一个正常的线程ID。

任何人都知道解决方法吗?我正在使用MSTest。 MSTest测试运行器和R#测试运行器也会出现相同的行为。

提前感谢您阅读我的问题。

乔治

1 个答案:

答案 0 :(得分:0)

在单元测试项目中添加对log4net的引用可能会有所帮助(参见this answer)。

话虽如此,你可能不需要在这种情况下登录(除非这些是真正的集成测试),所以最好使用Stub而不是真正的记录器对象。