В 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)]
к каждому методу тестирования, использующему файл развертывания (лучшая практика), или к классу тестов (проще для ленивых или спешащих, и самый простой способ обновить проект ранее использовавшимся). относительные пути или файл testsettings).
В тестовом методе 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")
.