Nunit 在并行运行测试时,使用log4net创建的日志会变得混合

Nunit 在并行运行测试时,使用log4net创建的日志会变得混合,nunit,log4net,log4net-configuration,Nunit,Log4net,Log4net Configuration,我有一个NUnit测试,它使用log4net并生成一个很好的日志,如下所示: [2017-07-20 INFO] Test children 00: Started [2017-07-20 INFO] Test children 00: Log line 1 [2017-07-20 INFO] Test children 00: Log line 2 [2017-07-20 INFO] Test children 00: Log line 3 [2017-07-20 INFO] Test chi

我有一个NUnit测试,它使用log4net并生成一个很好的日志,如下所示:

[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 00: Completed
如果我创建了这个测试的多个子项(使用TestCaseSource)并并行运行它们,那么日志会变得很难看,来自不同测试子项的行是混合的

我希望看到类似的情况(请注意,来自测试子项的所有日志都被分组在一起)

实际上,我得到了类似的结果(请注意,来自不同测试子级的日志是混合的)


有没有一种方法可以配置log4net以将来自一个线程的日志保存在一起?

我会避免在单元测试期间依赖外部组件进行日志记录。最好避免在单元测试期间依赖任何外部依赖项,因为这意味着您的测试不会与被测单元隔离

如果您正在为您的被测单元提供
ILog
,而不是提供log4net实现,请提供一个存根实现,该实现可以只写入控制台(
console.WriteLine
,等等)。测试期间写入控制台的所有内容都将在测试后可见,并与该测试关联


如果出于某种原因必须使用log4net,那么在log4net配置中使用
consoleApender
而不是
FileAppender

我会避免在单元测试期间依赖外部组件进行日志记录。最好避免在单元测试期间依赖任何外部依赖项,因为这意味着您的测试不会与被测单元隔离

如果您正在为您的被测单元提供
ILog
,而不是提供log4net实现,请提供一个存根实现,该实现可以只写入控制台(
console.WriteLine
,等等)。测试期间写入控制台的所有内容都将在测试后可见,并与该测试关联


如果出于某种原因必须使用log4net,则在log4net配置中使用
ConsoleAppender
而不是
FileAppender

使用Console.WriteLine将消息输出到正在运行的第一个测试,使用ILog时是否会更改?使用Console.WriteLine将消息输出到正在运行的第一个测试,使用ILog时是否会更改?
[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 00: Completed
[2017-07-20 INFO] Test children 01: Started
[2017-07-20 INFO] Test children 01: Log line 1
[2017-07-20 INFO] Test children 01: Log line 2
[2017-07-20 INFO] Test children 01: Log line 3
[2017-07-20 INFO] Test children 01: Completed
[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 01: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 01: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 01: Log line 2
[2017-07-20 INFO] Test children 01: Log line 3
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 01: Completed
[2017-07-20 INFO] Test children 00: Completed