Модульное тестирование - когда несколько проектов имеют собственный набор файлов App_Config - PullRequest
1 голос
/ 24 февраля 2010

Вот ситуация:

У меня есть решение с несколькими проектами модульного тестирования, каждый из которых нацелен на конкретную сборку в приложении. Для выполнения этих проектов модульного тестирования требуется набор файлов App_Config * (то есть connectionStrings.config, appSettings.config и т. Д.). Когда я запускаю тесты из VS.NET с использованием TD.NET или ReSharper, как и ожидалось, мир хорош, однако, когда я запускаю свои сценарии сборки NAnt для выполнения тестов, моя папка вывода сборки, которая содержит все сборки сборки и т. д. не содержат ни одного из связанных файлов App_config *.

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

Как лучше всего справиться с этой ситуацией?

Спасибо

Ответы [ 3 ]

0 голосов
/ 24 февраля 2010

В app.config вместо самих разделов конфигурации поместите ссылки на отдельные файлы с помощью атрибута configSource.

  <appSettings configSource="Config\AppSettings.SupportTest.config" />
  <ConnectionConfig configSource="Config\DatabaseConnections.config" />
  <log4net configSource="Config\Log4Net.config" />

Затем создайте разные файлы раздела конфигурации для каждого хоста, и в конфигурации приложения для каждого тестового хоста измените косвенные ссылки на соответствующий файл для каждого тестового хоста.

, т.е. в app.config для UnitTestHostA, введите

  <appSettings configSource="Config\AppSettings.UnitTestHostA.config" />
  <ConnectionConfig configSource="Config\Connections.UnitTestHostA.config" />
  <log4net configSource="Config\Log4Net.config" />

, а для UnitTestHostB -

  <appSettings configSource="Config\AppSettings.UnitTestHostB.config" />
  <ConnectionConfig configSource="Config\Connections.UnitTestHostB.config" />
  <log4net configSource="Config\Log4Net.config" />
0 голосов
/ 24 февраля 2010

На всякий случай, если кому-то интересно, как я решил эту проблему:

Мое разрешение наиболее близко к тому, что Чарльз и Дэвид предложили относительно переименования моих конфигурационных файлов, относящихся к тестовой сборке, однако вместо переименования каждого файла я выбрал переименование папки App_Config в [AssemblyName] _Config таким образом, сколько переименования я бы должен делать очень ограничен (на самом деле нет никакого другого переименования, чтобы сделать).

Конечно, мне также пришлось найти и заменить в моем главном файле App.config все configSource = "App_Config \" на configSource = "[AssemblyName] _Config" (где [AssemblyName] - это имя теста). монтаж)

0 голосов
/ 24 февраля 2010

Переименуйте файлы app.config вручную, чтобы они соответствовали названию конкретной сборки, с которой она идет («assembly1.dll.config», «assembly2.dll.config» и т. Д.). Сделайте это в самих проектах. Это запретит Visual Studio переименовывать файлы. Затем скопируйте их all в выходной каталог с их разными именами.

...