Следующее работает в VS2012 для тестовых проектов, включенных в несколько решений без использования файла testsettings:
1) Поместите файлы и папки, которые вы хотите развернуть, в папку в каталоге тестового проекта.
2) В свойствах проекта создайте шаг пост-сборки
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
и $(TargetDir)
являются макросами, которые будут интерпретироваться VS и должны быть включены как таковые.
<Project_Folder_Name>
- это имя папки, созданной на шаге 1.
<Deployment_Folder_Name>
- это имя папки, в которой будут развернуты тестовые файлы, и имя должно быть таким, чтобы оно было уникальным при развертывании нескольких тестовых проектов в одном каталоге, например <Project_Name>_TestInputs
.
Файлы тестов в общих расположениях также следует скопировать в папку развертывания целевого каталога, чтобы ограничить взаимодействие с тестами. Укажите исходный путь относительно $(ProjectDir)
макроса. Например "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Добавьте [DeploymentItem(source, destination)]
свойство либо в каждый тестовый метод, который использует файл развертывания (передовая практика), либо в тестовый класс (более простая практика для ленивых или торопливых, и самый простой способ обновить проект ранее использовавшимися относительными путями или файлом настроек теста. ).
В методе тестирования source
- это путь к файлу или каталогу, используемому в методе тестирования, относительно целевого каталога, созданного с помощью, xcopy
и destination
- это путь к каталогу, в котором он будет создан, относительно каталога развертывания. Чтобы тесты выполнялись согласованно либо в целевом каталоге, либо в каталоге развертывания. Путь назначения должен совпадать с исходным путем без ссылки на файл. Пример: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. Он DeploymentItem
должен быть включен в каждый метод, который использует этот файл или каталог.
В классе source
и destination
оба являются именем папки, созданной в целевом каталоге с помощью xcopy
; это скопирует всю папку в каталог развертывания при запуске любого теста в классе. Пример:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) В методах тестирования теперь вы можете получить доступ к файлам и каталогам с уверенностью, что они будут в рабочем каталоге, независимо от того, где Visual Studio решила разместить их в тот день, например File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.