我正在使用log4net,试图在我的单元测试中登录。如果我手动打电话
log4net.Config.XmlConfigurator.Configure();因为这是可行的,这似乎消除了所有的“坏的配置,配置位置”问题。
它工作,但有大量的测试类,所以这是不好的。
我加了
[assembly: log4net.Config.XmlConfigurator(Watch=true)]对于我的测试项目的组装信息,但是当我运行时(无论是通过本地MSTest,还是通过Resharper测试运行程序),我都得不到日志记录。
帮助?
发布于 2015-04-24 16:52:59
来源
[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);发布于 2015-04-18 22:04:49
就像程序集属性文档里说的
因此,如果使用配置属性,则必须调用log4net来允许它读取属性。对LogManager.GetLogger的简单调用将导致读取和处理调用程序集上的属性。因此,必须在应用程序启动期间尽早进行日志记录调用,当然,在任何外部程序集加载和调用之前也是如此。
因为单元测试运行程序为了查找和测试而加载测试程序集,所以不可能在单元测试项目中使用程序集属性初始化log4net,因此必须使用XmlConfigurator。
编辑:相联在OP注释中使用AssemblyInitializeAttribute可以在一个地方完成整个测试项目
https://stackoverflow.com/questions/29702853
复制相似问题