MSTest не может найти сборку - PullRequest
11 голосов
/ 30 марта 2011

Я использовал MSTest

, и я использую команду mstest /testsettings:local.Testsetting /testcontainer:folder\obj\Debug\test.dll

, и это вывод,

При запуске имеются следующие проблемы: Предупреждение: проблема развертывания тестового запуска: сборка или модуль Microsoft.Practices.Prism, на который прямо или косвенно ссылается тестовый контейнер test.dll, не найден.Предупреждение. Проблема развертывания тестового прогона: сборка или модуль Project.Common.dll, на которые прямо или косвенно ссылается тестовый контейнер test.dll, не найден.Предупреждение. Проблема с развертыванием тестового прогона: сборка или модуль Project.Infrastructure.dll, на которые прямо или косвенно ссылается тестовый контейнер test.dll, не найден.Предупреждение. Проблема с развертыванием тестового прогона: сборка или модуль Microsoft.Practices.Prism 'прямо или косвенно ссылается на тестовый контейнер' test.dll 'не найден.

Что я могу сделать, чтобы MSTest мог нормально работать.

Ответы [ 4 ]

4 голосов
/ 30 марта 2011

Вы можете установить файл Prism в GAC вашего сервера сборки.

3 голосов
/ 29 июля 2014

Все сборки, которые не используются непосредственно в тесте, не будут скопированы в тестовую папку. Поэтому эти методы испытаний должны быть украшены такими атрибутами, как:

[DeploymentItem("Microsoft.Practices.Prism.dll")]

Это решает проблему без добавления сборки в GAC.

0 голосов
/ 18 января 2017

самый простой способ.Просто добавьте

 string value = AppDomain.CurrentDomain.BaseDirectory;

к своему коду (в начальной точке вашего метода тестирования). Добавьте точку останова к вновь добавленному коду и проверьте путь к переменной value.

продолжить процесс тестирования и после того, как все получится, перейдите в папку переменной values.

Вы можете увидеть все dll внутри папки.Просто скопируйте их и прошивки в любое время и запустите dll проекта с помощью инструмента командной строки mstest.

set mstestPath="C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"

%mstestpath%\mstest /testcontainer:CodedUITestProject1.dll
0 голосов
/ 28 апреля 2016

Хорошо.DeploymentItem - способ исправить это.Однако DeploymentItem немного хрупок.

Вот как я это исправил.

«Текущий каталог» должен совпадать с DeploymentItem.Лучший компромисс, который я нашел, - это установить текущий каталог, в котором находится файл .sln.

Вот моя структура папок.

C:\SomeRootFolder\
C:\SomeRootFolder\MySolution.sln
C:\SomeRootFolder\packages\
C:\SomeRootFolder\packages\MyNugetPackage.1.2.3.4\lib\net45\SomeThirdPartyDll.dll
C:\SomeRootFolder\MyTestProject\MyTestProject.csproj
C:\SomeRootFolder\MyTestProject\MyTestClass.cs

MyTestClass.cs

[TestClass]
public class MyTestClass
{
    [TestMethod]
    /* The DeploymentItem item below is for error ::: Warning: Test Run deployment issue: The assembly or module 'SomeDll' directly or indirectly referenced by the test container 'C:\SomeRootFolder\MyTestProject\bin\debug\MyTestProject.dll' was not found. */
    /* There must be a CD (to the .sln folder) command... before the MsTest.exe command is executed */
    [DeploymentItem(@".\packages\MyNugetPackage.1.2.3.4\lib\net45\SomeDll.dll")]
    public void MyTest()
    {
    }
}

«Хитрость» заключается в том, чтобы создать компакт-диск (изменить каталог) для папки, в которой находится файл .sln.

REM Now the normal restore,build lines
nuget.exe restore "C:\SomeRootFolder\MySolution.sln"
REM the above nuget restore would create "C:\SomeRootFolder\packages\MyNugetPackage.1.2.3.4\lib\net45\SomeThirdPartyDll.dll"
MSBuild.exe "C:\SomeRootFolder\MySolution.sln" /p:Configuration=Debug;FavoriteFood=Popeyes /l:FileLogger,Microsoft.Build.Engine;logfile=MySolution.Debug.Build.log
REM (the below line is the trick to line up the 'current folder' with the relative path of the DeploymentItem)
cd "C:\SomeRootFolder\"
REM now the below will work without the annoying message, note that C:\SomeRootFolder\MyTestProject\bin\Debug\SomeThirdPartyDll.dll exists
MsTest.exe /testcontainer:"C:\SomeRootFolder\MyTestProject\bin\Debug\MyTestProject.dll" /resultsfile:MyTestProject.Dll.Results.trx

Теперь, поскольку «текущий каталог» (результат компакт-диска) находится в«C: \ SomeRootFolder \», относительный путь к DeploymentItem работает правильно.

Джиммини Крикетс ....... это немного ненормально.

Обратите внимание, ответ Пола Тейлора здесь

Запуск MsTest из командной строки с пользовательским базовым каталогом сборки

у меня не работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...