6

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

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

System.Configuration.ConfigurationErrorsException:配置系统初始化失败---> System.Configuration.ConfigurationErrorsException:无法识别的配置部分log4net。(C:\path\to\assembly.dll.config 第 7 行)

有没有办法在不将配置文件重命名为“AssemblyTest.config”的情况下解决这个问题?

4

3 回答 3

11

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

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

试试这样:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>
于 2012-01-27T10:58:03.037 回答
6

我不知道为什么你们被困在配置文件中,对于 nunit,如果您想在 nunit 测试运行器的文本输出窗口中查看运行的日志,您需要做的就是遵循代码行,

BasicConfigurator.Configure();

最好添加这一行是Test类的构造函数

例如

[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");
        }
    }
于 2013-10-30T02:17:01.173 回答
4

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

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

于 2008-10-02T14:44:09.680 回答