尝试nunit测试企业日志记录

时间:2016-09-19 08:42:49

标签: c# logging nunit enterprise-library

我试图通过测试企业日志记录来证明创建日志etnries等。

我似乎无法让它工作 - 我得到一个错误,在配置源中无法找到loggin的配置部分 - 我认为这与这是一个wpf并且app配置不存在这一事实有关当我从课堂上进行一个nunit测试时就开始了。有什么想法吗?

 namespace Nunit
{
    [TestFixture]
    public class NunitTests
    {
        string Path = @"C:\Users\dani\bin\Debug\trace.log";



        [Test]
        public void TestLogCreation()
        {}
}

2 个答案:

答案 0 :(得分:1)

当您运行NUnit可执行文件时,它会尝试查找它自己的配置文件,查找无法找到的任何配置条目。之后,它在machine.config文件中搜索配置条目。它也没有找到配置条目,因此它给出了错误。

您可以通过在machine.config文件中放置配置条目来解决此问题。

但这不是一种正确的单元测试方法。您必须提供假类来读取配置条目,而不是从配置文件中读取实际的配置值。

machine.config文件可以在下面提到的路径中找到:

32位

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64位

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

修改

public interface IConfigReader
{
    string ReadConfigEntry(string keyName);
}

public class ConfigReader : IConfigReader
{
    public string ReadConfigEntry(string keyName)
    {
        return System.Configuration.ConfigurationManager.AppSettings[keyName];
    }
}

public class FakeConfigReader : IConfigReader
{
    public string ReadConfigEntry(string keyName)
    {
        string configValue = string.Empty;

        //provide dummy implementation instead of reading actual .config file

        return configValue;
    }
}

现在创建IConfigReader接口的实例。在实际代码中,使用ConfigReader实现来读取配置值,而单元测试则使用FakeConfigReader实现。在FakeConfigReader中,您可以从ReadConfigEntry方法返回任意硬编码值。

答案 1 :(得分:0)

实现这一目标的更简单方法是在Nunit项目中创建app.config文件并将内容复制完美 -