2011-11-29 7 views
0

Сегодня я создал новый проект сборки ms в jenkins, который содержит модульные тесты и тесты интеграции. Прежде чем я переместил проект в jenkins, я использовал свою локальную машину для запуска тестов (Nunit, Reshaper).Лучшая практика для тестирования ресурсов тестирования Path?

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

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

Чтобы решить проблему прямо сейчас, я изменил некоторые методы SetUp() в своих тестах интеграции. Они загружают папку из текстового файла, и эта папка указывает путь к ресурсу, где хранятся все мои необходимые файлы. Теперь я могу запустить тесты на jenkins и на моей локальной машине.

У меня плохое настроение по поводу этого, он чувствует себя не совсем правильно. Что бы вы сделали, чтобы решить мою проблему? Издевательство над файлами - это не решение, я хочу взаимодействовать с файлами.

Спасибо!

ответ

1

Как правило, я считаю, что не рекомендуется брать что-либо из файлов во время тестовых тестов. Особенно неплохо взять что-либо из файлов txt/xml/etc, которые, как вы полагаете, будут скопированы в папку debug. Различные модульные тестовые двигатели ведут себя по-разному, некоторые из них имеют параметр shadow copy, и некоторые из них могут включить эту опцию по умолчанию. Shadow copy сделает почти невозможным поиск файлов не-dll в папке Debug.

Я бы рекомендовал вставить все данные, необходимые в тестовую сборку. Два способа сделать это:

  1. Данные жесткого кода в виде строки в некотором классе. Затем напишите его в файл или используйте его напрямую.
  2. Добавить файлы как ресурсы, которые будут встроены в тестовую сборку.
+1

Спасибо за ваш ответ. моя проблема появляется в приложении, которое используется для синхронизации нескольких исходных баз данных в одной целевой базе данных - я полностью согласен с вами в том, что взаимодействие с файлами в модульном тесте не является хорошей идеей, но это касается тестирования интеграции. я сломал тесты, чтобы быть 90% модульного теста и 10% интеграции. и настоящая проблема вложения файлов в файл ресурсов: даже пустая база данных имеет размер 80 МБ (700 таблиц с большим количеством полей). Вы по-прежнему будете рекомендовать свое решение этой дополнительной информацией? – Grrbrr404

1

Как добавить файл тестовых данных в систему управления исходным кодом, а также в проект .net. Затем настройте их, чтобы они были скопированы в директорию 'out', и вы можете получить к ним доступ в модульном тесте, так как они будут скопированы в эту папку с помощью msbuild.

+0

«Теневая копия» принесет вам проблемы с таким подходом. – Snowbear

+0

не использовать теневую копию? – Kolja

+0

Pls см. Мой комментарий в снеговике ответ - элементы как-то Трир для вашего ответа – Grrbrr404

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