NUnit测试项目的log4net配置部分

时间:2008-10-01 21:30:33

标签: .net configuration nunit log4net

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

在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)

有没有办法解决这个问题,而无需将配置文件重命名为'AssemblyTest.config'?

3 个答案:

答案 0 :(得分:10)

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

因此,如果您想将 log4net -elements放入app.config,您需要包含 configSections 元素(告诉 log4net -elements。

试试这样:

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

答案 1 :(得分:5)

我不知道为什么你们被困在配置文件中,对于nunit如果你想看看在nunit test runner的Text Output窗口中运行的日志,你需要做的就是遵循代码行,

BasicConfigurator.Configure();

最佳点添加此行是Test类的构造函数

e.g。

[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");
        }
    }

答案 2 :(得分:4)

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

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