我的VS2012单元测试中没有运行Log4net

时间:2013-09-17 18:33:55

标签: .net unit-testing log4net

我在我的网络应用程序上运行Log4net,但是当我尝试运行单元测试时,我无法使用日志工作。

在我的UnitTest项目中,我的AssembyInfo.cs具有以下内容:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

我的UnitTest项目中有一个log4net.config文件:

<?xml version="1.0"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="./SmvServiceTest.log" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <rollingStyle value="Size" />
    <maximumFileSize value="2MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

我将此文件设置为复制到输出目录。然而,当我运行我的单元测试时,他们会遇到很多日志语句,但是没有创建日志文件。

我想我已正确设置,单元测试有什么特别之处吗?我只是不明白为什么它不起作用。

任何帮助将不胜感激!

更新

我想我找到了问题的原因。我去了运行测试的临时位置,发现log4net.config实际上并不存在。我不知道为什么没有被复制,在文件属性中将Copy To Output目录设置为true。

2 个答案:

答案 0 :(得分:3)

如果您的配置文件未被复制到单元测试目录结构的 out 文件夹,则这可能不起作用。要复制配置文件,您需要在单元测试中使用 DeploymentItem 属性。

示例:

[TestClass, DeploymentItem("nhibernate_log4net.cfg.xml")]
public class Test

答案 1 :(得分:1)

一切都应该正常。在UnitTestProject\bin\Debug\目录下查找日志文件。因此,您要指定文件的相对路径,将在那里创建日志文件。