我正在使用名为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'?
答案 0 :(得分:10)
我遇到了同样的问题,因为我忘了在 configSections 元素中添加 log4net 定义。
因此,如果您想将 log4net -elements放入app.config,您需要包含 configSections 元素(告诉 log4net 在配置文件的顶部定义了em> -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()。