Как установить рабочий каталог для проектов MS Test
как я могу установить рабочий каталог для проектов MS Tests, например, я могу сделать это для обычных проектов приложений? Мой компонент, который протестирован, должен получить доступ к некоторым файлам конфигурации, которые также используются другими приложениями. Пока мне приходится копировать эти файлы в папку bin/debug моего тестового проекта, так как ожидается, что эти файлы находятся в рабочем каталоге.
Можно ли установить рабочий каталог для тестовых проектов?
Ответы
Ответ 1
Для тех, кто использует Visual Studio 2012, если вы установите выходной каталог тестового проекта в разделе "Свойства" | "Создать | Выход", то он станет рабочим каталогом при запуске тестов из Visual Studio (поскольку он использует Vstest.console.Exe). Если вы не хотите, чтобы ваши тестовые dll и т.д. Выходили в тот же каталог, что и ваши другие файлы, и вы не хотите, чтобы другие файлы были как контент в вашем тестовом проекте (как предложено Schaliasos), вы можете установить путь при запуске в методе, который имеет атрибут [AssemblyInitialize]. Вы делаете это, назначая System.Environment.CurrentDirectory, как обычно. Вероятно, вы захотите, чтобы рабочий каталог был настроен или читался из файла конфигурации.
Edit
Как указано Rohit.Net, когда вы выберете Run All Tests
, путь по умолчанию будет находиться в TestResults. То же самое применяется при использовании файла runsettings
. Выходная папка будет рабочим каталогом по умолчанию, если вы не используете DeploymentItems и: -
- Вы щелкните правой кнопкой мыши тест в Visual Studio и выберите "запустить/отладить" или
- Вы запускаете из командной строки с помощью vstest.console.exe.
Ответ 2
Рабочий каталог для тестовых проектов создается во время запуска ваших тестов.
Если вы запускаете их локально, это создается в папке TestResults
внутри вашей папки проекта. Если вы запускаете их на удаленных компьютерах, в каждом тестовом агенте создается следующая папка по следующему пути:
C:\Users {userRunsTheTest}\AppData\Local\VSEQT\QTAgent\{GuidForThisRun}
Чтобы ваши файлы были развернуты в этой папке и получили к ним доступ, вы должны:
- Установите
Copy to Output Directory = Copy Always
- В тесте, который нуждается в этих файлах, установите их как DeploymentItems.
Ответ 3
Предложение Acarlon не работает, когда вы выбираете Run All tests
из Test Explorer в Visual Studio 2012.
Путь по умолчанию, который вы получите, похож на папку ...\TestResults\Deploy_<YourName>2014-01-13 14_48_20\Out
.
Из-за этого может возникнуть вероятность того, что ваша БД не будет доступна, если сущность попытается открыть соединение для запуска тестируемого объекта.
В моем случае я использую SQL CE, который устанавливается как файл ресурсов и всегда скомпилирован и сам попадает в папку Bin/Debug/Resource
.