log4net 在单元测试下运行时找不到线程 ID



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

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

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

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

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

有人知道解决方法吗?我正在使用MSTest。MSTest 测试运行程序和 R# 测试运行程序也会发生相同的行为。

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

乔治

在单元测试项目中添加对 log4net 的引用可能会解决问题(请参阅此答案)。

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