Следующее работает в 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").