gpt4 book ai didi

c# - MSTest - 如何为 UnitTest 项目初始化 log4net?

转载 作者:可可西里 更新时间:2023-11-01 08:04:04 25 4
gpt4 key购买 nike

我有一个用于测试 ASP.NET MVC 项目的 Visual Studio 单元测试项目。

将程序集级 log4net.Config.XmlConfigurator 属性添加到 AssemblyInfo.cs 不起作用,SO 上的其他人发现他们必须直接调用 log4net.Config .XmlConfigurator.Configure();

问题是,单元测试如何做到这一点?在类方法上使用 Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize 属性的答案不起作用。

对我来说,这段代码会导致在输出窗口中记录一个 InvalidOperationException 并且测试 session 会提前爆炸。

[TestClass]
public sealed class Startup
{
[AssemblyInitialize]
public void Configure()
{
System.Diagnostics.Debug.Write("Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize");
}
}

阅读文档,MSDN 说不要在 ASP.NET 的测试项目上使用 AssemblyInitialize,因为它们可能会被多次调用。

那么如何才能在运行任何测试之前配置 log4net?

最佳答案

答案是我误用了 AssemblyInitialize .

一旦我将调试器设置为在第一次出现异常时停止,我就能够读到我的方法不是静态的,并且我没有添加接受 TestContext 的参数。

如果你问我,如果方法必须以某种方式使用,那么属性的使用非常糟糕。不太容易被发现。

无论如何,这有效:

[TestClass]
public static class Startup
{
[AssemblyInitialize]
public static void Configure(TestContext tc)
{
log4net.Config.XmlConfigurator.Configure();
}
}

关于不要将其用于 ASP.NET 测试的建议,请采纳。它可能会运行不止一次,但这并不重要。

关于c# - MSTest - 如何为 UnitTest 项目初始化 log4net?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24692795/

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