我的开源.NET软件使用Log4net,没有问题。
但是当我使用 NUnit 测试它时,我在第二次测试中出现以下错误。例如,如果我运行测试两次,无论测试如何,它都会第一次成功,第二次失败:
System.IO.IOException:进程无法访问文件"C:\Users\win7pro32bit\AppData\Roaming\cmissync\debug_log.txt",因为它正被另一个进程使用。
日志文件由对 log4net 的静态调用创建。Config.XmlConfigurator.Configure(path)
我想我应该以某种方式关闭 TearDown 中的日志文件,但我看不到任何 log4net "关闭"方法。
将<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
添加到 log4net 配置可以解决问题,但这会降低性能,因此我更喜欢对生产代码没有影响的测试端解决方案。
正如Adrianbanks和Cole W在评论中建议的那样,我真的不需要登录到文件。
所以这解决了问题:
[SetUp]
public void Init()
{
log4net.Config.BasicConfigurator.Configure(new TraceAppender());
}