首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么log4net XmlConfigurator属性不适用于我的单元测试

为什么log4net XmlConfigurator属性不适用于我的单元测试
EN

Stack Overflow用户
提问于 2015-04-17 15:02:12
回答 2查看 422关注 0票数 1

我正在使用log4net,试图在我的单元测试中登录。如果我手动打电话

代码语言:javascript
复制
log4net.Config.XmlConfigurator.Configure();

因为这是可行的,这似乎消除了所有的“坏的配置,配置位置”问题。

它工作,但有大量的测试类,所以这是不好的。

我加了

代码语言:javascript
复制
[assembly: log4net.Config.XmlConfigurator(Watch=true)]

对于我的测试项目的组装信息,但是当我运行时(无论是通过本地MSTest,还是通过Resharper测试运行程序),我都得不到日志记录。

帮助?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 16:52:59

来源

代码语言:javascript
复制
[AssemblyInitialize()]
public static void MyTestInitialize(TestContext testContext)
{
// Take care the log4net.config file is added to the deployment files of the testconfig
FileInfo fileInfo;
string fullPath = Path.Combine(System.Environment.CurrentDirectory, "log4net.config");
fileInfo = new FileInfo(fullPath);
票数 1
EN

Stack Overflow用户

发布于 2015-04-18 22:04:49

就像程序集属性文档里说的

因此,如果使用配置属性,则必须调用log4net来允许它读取属性。对LogManager.GetLogger的简单调用将导致读取和处理调用程序集上的属性。因此,必须在应用程序启动期间尽早进行日志记录调用,当然,在任何外部程序集加载和调用之前也是如此。

因为单元测试运行程序为了查找和测试而加载测试程序集,所以不可能在单元测试项目中使用程序集属性初始化log4net,因此必须使用XmlConfigurator

编辑:相联在OP注释中使用AssemblyInitializeAttribute可以在一个地方完成整个测试项目

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29702853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档