.net NUnit测试项目的log4net配置部分

.net NUnit测试项目的log4net配置部分,.net,configuration,nunit,log4net,.net,Configuration,Nunit,Log4net,我正在使用名为AssemblyTest.NUnit的项目运行NUnit。该测试调用另一个使用log4net程序集的程序集。这是使用nunit版本2.4.3和.NET2.0框架 在TestFixtureSetup中,我调用log4net.Config.XmlConfigurator.Configure()并得到以下错误: System.Configuration.ConfigurationErrorsException: Configuration system failed to initial

我正在使用名为AssemblyTest.NUnit的项目运行NUnit。该测试调用另一个使用log4net程序集的程序集。这是使用nunit版本2.4.3和.NET2.0框架

在TestFixtureSetup中,我调用log4net.Config.XmlConfigurator.Configure()并得到以下错误:

System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section log4net. (C:\path\to\assembly.dll.config line 7) System.Configuration.ConfigurationErrorsException:配置系统未能初始化-->System.Configuration.ConfigurationErrorsException:无法识别的配置部分log4net。(C:\path\to\assembly.dll.config第7行)
有没有办法在不将配置文件重命名为“AssemblyTest.config”的情况下修复此问题?

使用根元素log4net为log4net创建单独的配置文件


在TestFixtureSetup中,为该配置文件创建一个FileInfo对象,并将其作为log4net.config.XmlConfigurator.Configure()的参数提供。

我遇到了相同的问题,因为我忘记了在configSections元素中添加log4net定义

因此,如果要将log4net元素放入app.config中,则需要在配置文件的顶部包含configSections元素(它告诉log4net元素的定义位置)

试着这样做:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>

...

我不知道你们为什么会被困在配置文件中,对于nunit来说,若你们想在nunit测试运行程序的文本输出窗口中看到日志,你们只需要执行下面的代码行

BasicConfigurator.Configure();
最佳点添加此行是测试类的构造函数

e、 g


我不熟悉.NET,但错误中没有任何东西对我意味着至少这与配置文件的名称有关。在我看来,配置文件中的第7行似乎有问题。是的,这就是我问这个问题的原因。配置文件行使用nunit项目名称命名的文件和完全相同的文本。谢谢你的观点。我在VisualStudio测试系统中也遇到了这个问题。它将我所有的日志语句转换为单元测试中的输出,并且不需要重做应用程序实际使用的任何内容+1表示没有配置文件!完美的
[TestFixture]
    public class MyTest
    {
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyTest));

        public MyTest()
        {
            BasicConfigurator.Configure();
        }

        [SetUp]
        public void SetUp()
        {
           log.Debug(">SetUp");               
        }

        [TearDown]
        public void TearDown()
        {
            log.Debug(">TearDown");
        }

        [Test]
        public void TestNothing()
        {
            log.Debug(">TestNothing");
        }
    }