2016-02-11 4 views
0

Я хочу понять, правильный способ обработки сценария нижеNUnit Test EXE и «ConfigurationManager.AppSettings» EXE не работает

У меня есть C# решение, которое имеет два проекта Один проект HelloWorld и другой проект является TestHelloWorld

HelloWorld проект читать конфигурации с помощью ConfigurationManager.AppSettings [ "Message"]. ToString()

И проект TestHelloWorld является проект NUnit для тестирования проекта HelloWorld.

Когда работа, выполняемая из NUnit, код чтения конфигурации не работает. Потому что он попытался прочитать config из TestHelloWorld.config вместо HelloWorld.exe.config.

Может кто-то, пожалуйста, предоставьте хорошую практику обращения с этим.

Я приложил графику своего исходного кода, а также разместил код ниже, ценю людей, если вы можете скачать код и попробовать.

Благодаря Source Code Image

Program.cs код, как показано ниже

using System; 
    using System.Collections.Generic; 
    using System.Text; 
    using System.Configuration; 

    namespace HelloWorld 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       WordToSay wts = new WordToSay(); 
       Console.WriteLine(wts.WordText()); 
       Console.ReadLine(); 
      } 
     } 

     public class WordToSay 
     { 
      public string WordText() 
      { 
       return ConfigurationManager.AppSettings["Message"].ToString(); 
      } 
     } 
    } 

App.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings > 
     <add key ="Message" value ="Hello"/> 
    </appSettings> 
</configuration> 

Class1.cs код, как показано ниже

using System; 
    using System.Collections.Generic; 
    using System.Text; 
    using NUnit.Framework; 
    using HelloWorld ; 

    namespace TestHelloWorld 
    { 
     [TestFixture] 
     public class Class1 
     { 
      [Test] 
      public void TestHello() 
      { 
       WordToSay wts = new WordToSay(); 
       StringAssert.AreEqualIgnoringCase("Hello", wts.WordText()); 
      } 
     } 
    } 
+0

Как и в сторону, это не очень хороший тест устройство, так как вы не испытывая никакой логики, но, по существу, пытается проверить функциональность «ConfigurationManager», который вы можете предположить, Microsoft уже делает. – Steve

ответ

-1

Если ваши модульные тесты предназначены для проверки кода, то вообще не зависят от конфигурационного файла. Извлеките свою зависимость из своих классов и используйте инъекцию зависимостей для ввода данных. Таким образом, вы можете заглушить свой класс конфигурации.

В качестве альтернативы просто добавьте файл app.config в проект тестирования модулей, содержащий соответствующую информацию.

EDIT: Вы также можете просмотреть этот пост Reload app.config with nunit

Смежные вопросы