Как установить относительный путь для DeploymentItem в MSTest?

Многие люди борются с относительным путем в DeploymentItem. Относительный путь — из папки решения. Это может применяться только при запуске из Visual Studio, поскольку mstest.exe запускается с скомпилированным проектом (а не файлом sln) как dll и, следовательно, не может правильно определить относительный путь элемента развертывания.

Я обнаружил, что мне следует установить относительный путь DeploymentItem в testrun.config с помощью элемента RelativePathRoot. Но документации для RelativePathRoot, что странно. Как установить относительный путь к MSTest?


person Tomas Kubes    schedule 24.08.2015    source источник


Ответы (1)


Правильный подход — установить рабочий каталог в качестве каталога решения при вызове MSTest.exe. Это простой способ решения проблем DeploymentItem.

В результате это означает, что если у вас есть несколько проектов и несколько решений (каждое решение содержит некоторые из этих проектов) в вашем репозитории, все эти решения (файлы sln) ДОЛЖНЫ находиться в одном каталоге. Потому что относительный путь от каждого решения к одному проекту должен быть одинаковым. Поэтому я настоятельно рекомендую иметь один корневой каталог с именем Solutions и все эти sln-файлы внутри.

Если тестовый проект содержится в двух разных решениях в разных каталогах, относительный путь к DeploymentItem будет разным, и вы никогда не сможете правильно настроить MSTest с deploymentPath в обоих решениях.

person Tomas Kubes    schedule 29.08.2015
comment
Мне нравится ответ. Как вы это делаете из командной строки? Спасибо. - person granadaCoder; 27.04.2016
comment
Да, либо из командной строки, либо там есть настройка рабочего каталога в непрерывной интеграции TeamCity, которая запускает mstests.exe при каждой фиксации. - person Tomas Kubes; 28.04.2016
comment
В порядке. Вы дали мне подсказку, в которой я нуждался. Для будущих читателей.........прежде чем я вызову MsTest.exe......я создаю компакт-диск .\FolderWhereMySolutionResides. Затем в определении DeploymentItem у меня есть относительный путь к необходимому файлу..... в зависимости от того, где находится .sln (он же папка FolderWhereMySolutionResides). Мой выглядел так: [DeploymentItem(@.\packages\MyNugetPackage.1.2.3.4\lib\net45\SomeDll.dll)] - person granadaCoder; 28.04.2016