gpt4 book ai didi

unit-testing - 从 Visual Studio/Microsoft 测试框架运行时,Log4net 找不到配置文件

转载 作者:行者123 更新时间:2023-12-04 11:40:30 25 4
gpt4 key购买 nike

我们正在为在 .NET 4.0 下运行的业务层编写单元测试。业务层是一个简单的 C# 类库,通常在 SOAP 和 REST Web 服务中运行。我们的应用程序在单独的包装程序集中使用 log4net 进行日志记录。日志程序集中的 C# 代码有一个程序集信息指令,它告诉 log4net 配置文件的名称,一个 la-

[程序集:log4net.Config.XmlConfigurator(ConfigFile="AcmeLogging.config", Watch=true)]

通过包装器初始化 log4net 在 Web 服务中工作正常。当我们用我们的单元测试程序集初始化它时,它似乎看不到配置文件。 configuratino 文件通过properties 进行配置,复制到执行目录中,我们确实在bin\debug 目录中看到了它。使用从同一文件夹中运行的日志程序集的快速控制台测试程序工作正常。奇怪的是,行为问题是间歇性的,并且在不同时间出现在不同开发人员的机器上,并且无法以任何确定性的方式解决。

单步执行包装器程序集代码,log4netLogManager.GetLogger() 调用似乎正确返回,但 log.Logger.Repository.GetAppenders() 返回的附加程序列表为空。由于无论文件是否在 Bin\Debug 文件夹中,这种不正确的行为都是相同的,我们认为它没有看到该文件。

任何关于我们在 Microsoft 测试框架中运行 log4net 缺少什么的线索将不胜感激。

最佳答案

单元测试的独特之处在于,如果您在单元测试中需要配置文件,则需要将它们作为部署项包含在内。这是我如何在测试类中执行此操作的示例:

[TestClass]
[DeploymentItem("hibernate.cfg.xml")]
public class AsyncForwardingAppenderTest
{

}

除了 Deployment您需要的属性 启用部署 在您的测试设置中。为此,请转到测试-> 编辑测试设置->。然后点击 Deployment右侧区域。单击复选框 Enable Deployment .

执行此操作并运行测试后,您的配置文件应位于测试结果文件夹中。 TestResults\username_machine 日期戳\Out .如果您的配置文件不在此文件夹中,它将无法工作。这就是 DeploymentItem 属性的作用。它将文件粘贴在此 文件夹。

如果您不想在每个测试类中都包含 DeploymentItem 属性,我所做的就是创建一个基本测试类,所有使用 log4net 的测试都从该类继承并使用 DeploymentItem 属性对其进行标记。

关于unit-testing - 从 Visual Studio/Microsoft 测试框架运行时,Log4net 找不到配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14271000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com