Сбой модульных тестов из-за отсутствия файла .config - PullRequest
6 голосов
/ 01 сентября 2011

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

string conn = ConfigurationManager
    .ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString;

При развертывании службы все работает нормально, но при модульном тестировании файл конфигурации становится невидимым. ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"] становится нулевой ссылкой и выбрасывает соответственно.

Как мне включить мой конфигурационный файл в тестах? Прямо сейчас, единственное поведение, которое я могу протестировать, - это обработка отсутствующих файлов конфигурации, что не очень полезно.

Ответы [ 3 ]

5 голосов
/ 01 сентября 2011

спрашивал снова и снова и снова, и отвечал мне на прошлой неделе, а также на этой неделе:)

если у вас есть свои модульные тесты в другом проекте (сгенерированный VS проект, библиотека классов и т. Д.)просто создайте конфигурацию приложения для этого проекта модульного теста и вставьте те же ключи конфигурации, что и в проект, который работает.

Конечно, я упрощаю, потому что вы можете совершенно точно настроить эти ключи с конкретными значениями теста,но для начала скопируйте то, что работает, затем настройте его на случай, если вы захотите указать на другую базу данных, компьютер и т. д. :) :)

3 голосов
/ 20 декабря 2013

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

copy /Y "$(SolutionDir)ProjectName\App.config" "$(TargetDir)TestProjectName.dll.config"
3 голосов
/ 01 сентября 2011

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

Используйте что-то подобное на TestClass (предполагается, что у вас есть копия app.config, локальная для ваших тестовых классов):

[DeploymentItem("app.config")]
...