Luk*_*ett 13 c# asp.net-mvc unit-testing log4net-configuration visual-studio-2012
我有一个用于测试ASP.NET MVC项目的Visual Studio单元测试项目.
将程序集级别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");
}
}
Run Code Online (Sandbox Code Playgroud)
阅读文档,MSDN表示不要AssemblyInitialize在ASP.NET的测试项目中使用,因为它们可能不止一次被调用.
那么如何才能在运行任何测试之前配置log4net?
Luk*_*ett 26
答案是我误用了AssemblyInitialize.
一旦我将调试器设置为在第一次机会异常时停止,我就能够读到我的方法不是静态的,并且我没有添加一个接受TestContext它的参数.
如果你问我,如果方法必须是某种方式,那么使用属性是非常糟糕的.不是很容易被发现.
无论如何,这工作:
[TestClass]
public static class Startup
{
[AssemblyInitialize]
public static void Configure(TestContext tc)
{
log4net.Config.XmlConfigurator.Configure();
}
}
Run Code Online (Sandbox Code Playgroud)
关于不使用它进行ASP.NET测试的建议,请点击它.它可能不止一次运行,但这无关紧要.
| 归档时间: |
|
| 查看次数: |
8363 次 |
| 最近记录: |