我们正在为在 .NET 4.0 下运行的业务层编写单元测试。业务层是一个简单的 C# 类库,通常在 SOAP 和 REST Web 服务中运行。我们的应用程序在单独的包装程序集中使用 log4net 进行日志记录。日志程序集中的 C# 代码有一个程序集信息指令,它告诉 log4net 配置文件的名称,一个 la-
[程序集:log4net.Config.XmlConfigurator(ConfigFile="AcmeLogging.config", Watch=true)]
通过包装器初始化 log4net 在 Web 服务中可以正常工作。当我们使用单元测试程序集对其进行初始化时,它似乎看不到配置文件。configuratino 文件通过属性配置为复制到执行目录,我们确实在 bin\debug 目录中看到它。使用在同一文件夹中运行的日志程序集的快速控制台测试程序可以正常工作。奇怪的是,行为问题是断断续续的,在不同的时间出现在不同开发人员的机器上,无法以任何确定性的方式解决。
单步执行包装程序集代码,log4netLogManager.GetLogger() 调用似乎正确返回,但 log.Logger.Repository.GetAppenders() 返回的附加程序列表为空。由于无论文件是否在 Bin\Debug 文件夹中,这种错误行为都是相同的,因此我们认为它没有看到该文件。
任何关于我们在 Microsoft 测试框架中运行 log4net 所缺少的线索将不胜感激。