加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MSTest – 如何初始化一个UnitTest项目的log4net?

发布时间:2020-12-15 17:36:10 所属栏目:百科 来源:网络整理
导读:我有一个用于测试ASP.NET MVC项目的Visual Studio单元测试项目. 将Assembly-level log4net.Config.XmlConfigurator属性添加到AssemblyInfo.cs不起作用,而其他人则发现他们必须直接调用log4net.Config.XmlConfigurator.Configure(); 问题是,如何进行单元测试
我有一个用于测试ASP.NET MVC项目的Visual Studio单元测试项目.

将Assembly-level log4net.Config.XmlConfigurator属性添加到AssemblyInfo.cs不起作用,而其他人则发现他们必须直接调用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表示不对ASP.NET的测试项目使用AssemblyInitialize,因为它们可能被调用不止一次.

那么如何才能完成这样的操作,以便在运行任何测试之前配置log4net?

解决方法

答案是我错误地使用AssemblyInitialize.

一旦我设置调试器停止第一次机会异常,我能够读取我的方法不是静态的,我没有添加一个接受TestContext的参数.

如果方法必须是某种方式,如果你问我的话,一个非常糟糕的使用属性.不是很可见

无论如何,这样做:

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

关于不使用ASP.NET测试的建议,请教sod.它可能会跑不止一次,但这并不重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读