我有一个 Visual Studio 单元测试项目,用于测试 ASP.NET MVC 项目。
添加程序集级别log4net.Config.XmlConfigurator
AssemblyInfo.cs 的属性不起作用,SO 上的其他人发现他们必须使用直接调用log4net.Config.XmlConfigurator.Configure();
问题是,单元测试如何做到这一点?使用的答案Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize
类方法上的属性不起作用。
对我来说,这段代码会导致InvalidOperationException
登录输出窗口并且测试会话提前爆炸。
[TestClass]
public sealed class Startup
{
[AssemblyInitialize]
public void Configure()
{
System.Diagnostics.Debug.Write("Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize");
}
}
看了文档,MSDN说不要使用AssemblyInitialize
ASP.NET 的测试项目,因为它们可能会被多次调用。
那么如何才能在运行任何测试之前配置 log4net 呢?
答案是我使用不当AssemblyInitialize
.
一旦我将调试器设置为在第一次机会异常时停止,我就能够读到我的方法不是静态的,并且我没有添加接受参数TestContext
to it.
如果你问我,如果方法必须以某种方式使用,那么对属性的使用相当蹩脚。不太容易被发现。
无论如何,这有效:
[TestClass]
public static class Startup
{
[AssemblyInitialize]
public static void Configure(TestContext tc)
{
log4net.Config.XmlConfigurator.Configure();
}
}
关于不要将其用于 ASP.NET 测试的建议,请删除它。它可能会运行多次,但这并不重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)