Может ли модульный тестовый проект загрузить файл app.config целевого приложения?

Решили это, следуя инструкциям в принятом ответе на следующий вопрос: Проблема Rails CORS с запросом конечной точки API Ajax

143
задан 23.05.2017, 14:47

4 ответа

Самый простой способ сделать это должно добавить .config файл в разделе развертывания по Вашему модульному тесту.

Для этого открываются .testrunconfig файл от Ваших Объектов Решения. В разделе Deployment добавьте вывод .config файлы от каталога сборки Вашего проекта (по-видимому bin\Debug).

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

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

57
ответ дан 05.10.2019, 12:26
  • 1
    It' s намного легче просто добавить app.config fiel к тестовому проекту - Вы тогда don' t должен играть вокруг с .testrunconfig вообще. – Rowland Shaw 14.01.2009, 14:20
  • 2
    @Rowland, если Вы делаете это, необходимо поддержать две копии app.config. I' d скорее проводят 10 секунд, однажды, с помощью .testrunconfig инструмента, чем необходимость не забыть обновлять app.config в обоих местах. – Jeromy Irvine 15.01.2009, 08:22
  • 3
    Can' t Вы просто добавляют ссылку некопирования? (Добавьте Существующий Объект...), – EFraim 10.11.2010, 08:39
  • 4
    EFraim' s комментарий должен быть принятый ответ, это намного более просто, чем что-либо еще. – reggaeguitar 05.02.2014, 21:38
  • 5
    О, но это убегает как половина панели, расположенной в индексе 0 и индексе 13. Существует ли способ сместить так панель, выстраивается в линию немного оси Y? – Matthew The Terrible 05.03.2020, 04:03

Если Вы используете NUnit, смотрите на это сообщение . В основном у Вас должен будет быть свой app.config в том же каталоге как Ваш .nunit файл.

4
ответ дан 05.10.2019, 12:26
  • 1
    I' m использующий Систему Команды VS08 для моих модульных тестов, но спасибо за подсказку по NUnit! – Jordan Parmer 05.12.2008, 17:24

Я использую NUnit, и в моем каталоге проекта у меня есть копия моего Приложения. Конфигурация, что я изменяю некоторую конфигурацию (пример я перенаправляю к тестовой базе данных...). У Вас должен быть он в тот же каталог протестированного проекта, и Вы будете в порядке.

0
ответ дан 05.10.2019, 12:26
  • 1
    Спасибо за совместное использование Ваших результатов! – Martin R 09.03.2013, 13:22

Используете ли Вы Тестирование системы Команды или NUnit, лучшая практика должна создать отдельную Библиотеку классов для Ваших тестов. Просто добавление App.config к Вашему Тестовому проекту будет автоматически скопировано в Вашу папку мусорного ведра, когда Вы скомпилируете .

, Если бы Ваш код уверен в определенных тестах конфигурации, самый первый тест, я записал бы, проверяет это, конфигурационный файл доступен ( так, чтобы я знал, что я весьма нормален ):

<configuration>
   <appSettings>
       <add key="TestValue" value="true" />
   </appSettings>
</configuration>

И тест:

[TestFixture]
public class GeneralFixture
{
     [Test]
     public void VerifyAppDomainHasConfigurationSettings()
     {
          string value = ConfigurationManager.AppSettings["TestValue"];
          Assert.IsFalse(String.IsNullOrEmpty(value), "No App.Config found.");
     }
}

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

public class MyObject
{
     public void Configure(MyConfigurationObject config)
     {
          _enabled = config.Enabled;
     }

     public string Foo()
     {
         if (_enabled)
         {
             return "foo!";
         }
         return String.Empty;
     }

     private bool _enabled;
}

[TestFixture]
public class MyObjectTestFixture
{
     [Test]
     public void CanInitializeWithProperConfig()
     {
         MyConfigurationObject config = new MyConfigurationObject();
         config.Enabled = true;

         MyObject myObj = new MyObject();
         myObj.Configure(config);

         Assert.AreEqual("foo!", myObj.Foo());
     }
}
53
ответ дан 05.10.2019, 12:26
  • 1
    Я соглашаюсь с духом передачи в зависимости от конфигурации здесь, этому, кажется, ответили Mark Seemann не меньше! здесь: Провальные модульные тесты из-за пропавших без вести .config файл – Shaun 02.08.2012, 17:43
  • 2
    Существует " пропавшие без вести от строки: представьте значение в виде строки = ConfigurationManager. AppSettings [" TestValue]; я пытался зафиксировать его, но должен был найти, что еще 5 символов фиксируют, чтобы заставить stackoverflow позволять мне делать редактирование. – Jane 29.10.2012, 14:18
  • 3
    право Вы. фиксированный. – bryanbcook 20.11.2012, 12:00
  • 4
    В этом случае я думаю, что Вам, возможно, понадобились бы к вручную trnasform Ваши данные до построения диаграммы. – Dutts 05.03.2020, 04:04

Теги

Похожие вопросы