2016-09-19 96 views
0

我想NUnit测试企业记录到坡口创建的日志etnries等。尝试NUnit测试Enterprise记录

我似乎无法得到它的工作 - 我得到一个错误的配置节可洛没有在配置源中找到 - 我认为这与事实有关,这是一个wpf,应用程序配置不会在我从一个类运行nunit测试时启动。有什么想法吗?

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



     [Test] 
     public void TestLogCreation() 
     {} 
} 
+0

是在app.config在单元测试项目中配置是否正确?是否具有记录输出所需的所有配置? –

回答

0

来完成,这将是创建NUnit的项目内app.config文件和内容拷贝上更简单的方法 - 完美的作品

+0

这总是可能的。但是,虽然单元测试一段代码,但不应该依赖任何外部组件。在那种情况下,它变成了一个集成测试。这就是为什么在读取配置条目时收到错误的原因,因为您使用的是依赖于外部因素的代码。快乐编码:) – Sagar

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 

EDIT

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方法返回任意硬编码值。

+0

你会如何创建一个假的类阅读配置entrie – Webezine

+0

@ user3223507我编辑了我的答案。请检查它是否有用。 – Sagar

+0

谢谢 - 我相当新的C#所以已经复制yoru代码但不知道我在哪里可以应用的东西 - 我编辑abovce包括我的代码会哟无意中帮助我多一点,以显示我如何实现 – Webezine