2015-08-24 2 views
1

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

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

ответ

2

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

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

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

+0

Мне нравится ответ. Как вы это делаете из командной строки? Благодарю. – granadaCoder

+0

Да, либо из командной строки, либо там есть настройка «Рабочий каталог» в непрерывной интеграции TeamCity, которая запускает файл mstests.exe с каждой фиксацией. – qub1n

+1

Хорошо. Ты дал мне подсказку, в которой я нуждался. Для будущих читателей ........., прежде чем я позвоню MsTest.exe ...... Я делаю «CD. \ FolderWhereMySolutionResides». Затем в DeploymentItem defintion у меня есть относительный путь к нужному файлу ..... на основе того, где .sln (aka, та же папка FolderWhereMySolutionResides). Mine выглядела так: [DeploymentItem (@ ". \ Packages \ MyNugetPackage.1.2.3.4 \ lib \ net45 \ SomeDll.dll")] – granadaCoder

Смежные вопросы