2016-09-19 4 views
0

Я пытаюсь Nunit протоколирования теста предприятия в proove создания войти etnries и т.д ..Попытки Nunit протоколирования теста предприятие

Я не могу показаться, чтобы получить его работы- я получаю сообщение об ошибке в раздел конфигурации для может Вход для реселлеров не может быть найден в источнике конфигурации - я думаю, что это связано с тем, что это 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

Гораздо более простой способ сделать это было бы создать файл app.config в рамках проекта NUnit и скопировать содержимое на - отлично работает

+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 

РЕДАКТИРОВАТЬ

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

как вы создадите поддельный класс для чтения config entrie – Webezine

+0

@ user3223507 Я отредактировал свой ответ. Пожалуйста, проверьте, полезно ли это или нет. – Sagar

+0

Спасибо - я довольно новичок в C#, так что скопировал код yoru, но не уверен, где я буду применять вещи - Ive отредактировал abovce, чтобы включить мой код, если бы я помог мне немного больше, чтобы показать, как я реализую это. – Webezine