MSTest.exe не копирует все необходимые библиотеки проекта? - PullRequest
9 голосов
/ 10 ноября 2011

Я пытаюсь запустить MSTest.exe, и похоже, что testcontainer не читается должным образом;в то время как все мои тесты успешно выполняются во всех конфигурационных средах в Visual Studio.

Я использую следующую команду:

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /nologo /usestderr /testSettings:"C:\temp\MyProject\Sources\MyProject\Local.testsettings" /searchpathroot:"C:\temp\MyProject\Binaries" /resultsfileroot:"C:\temp\MyProject\TestResults" /testcontainer:"C:\temp\MyProject\Binaries\MyProject.Services.Server.UnitTests.dll" 

Ссылки проекта в рамках проекта testcontainer выглядят так:

<ItemGroup>
    <ProjectReference Include="..\..\Services\MyProject.Services.Server\MyProject.Services.Server.csproj">
        <Project>{92EC1999-CC0C-47DD-A4D6-17C3B1233C50}</Project>
        <Name>MyProject.Services.Server</Name>
    </ProjectReference>
    <ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Interfaces\MyProject.ServiceConfiguration.Interfaces.csproj">
        <Project>{8E2E7BA9-75DB-458E-A184-AC1030EAD581}</Project>
        <Name>MyProject.ServiceConfiguration.Interfaces</Name>
    </ProjectReference>
    <ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Services\MyProject.ServiceConfiguration.Services.csproj">
        <Project>{39514766-23A8-45DB-96EA-B6B4D9C8B086}</Project>
        <Name>MyProject.ServiceConfiguration.Services</Name>
    </ProjectReference>
</ItemGroup>

Ни ServiceConfiguration.Interfaces, ни DLL ServiceConfiguration.Services не помещаются в папку Out в TestResults.

Идентификаторы GUID проекта действительно совпадают между ссылками и ссылочными проектами.

Есть ли что-то, чего мне не хватает в командной строке?

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011

mstest.exe не будет совпадать со всеми ссылочными dll.

См. Сообщение в блоге по этому вопросу на https://web.archive.org/web/20111221110459/http://www.dotnetthoughts.net/2011/11/22/mstest-exe-does-not-deploy-all-items/

4 голосов
/ 29 августа 2014

Вы можете точно указать, какие файлы копируются в тестовый каталог, используя файл настроек теста . Вы можете создать несколько файлов настроек теста в Visual Studio, поэтому у вас может быть один для запуска из VS, другой для запуска из MSTest, другой для сборок CI сервера и так далее. Для получения дополнительной информации см. Здесь: Создание настроек теста для запуска автоматических тестов из Visual Studio

Используйте параметр /testsettings:<filename>, чтобы указать его в командной строке.

Поначалу кажется, что смущает людей то, что по умолчанию «текущий каталог» MSTest - это не каталог запуска MSTest, а папка Out результатов теста.

Как упоминалось ранее, MSTest неправильно выводит все используемые сборки, если у вас нет прямой ссылки, он не будет копировать сборку. Тем не менее, Visual Studio имеет аналогичное поведение и в своей сборке, поэтому многие люди работают над этим, добавляя поддельные ссылки на код - ужасное решение - я не рекомендую его.

Однако собственные библиотеки DLL еще более проблематичны, и я обнаружил, что явное копирование их в конфигурации теста (настройках теста) работает для них так же, как и для управляемых сборок.

1 голос
/ 26 октября 2015

Независимо от того, идет ли речь об Out или области сборки, зависит от разных факторов, однако, для ситуаций, когда это все еще не работает, вы можете использовать "hack" DeploymentItem или настроить файл runsettings.

Попробуйте посмотреть на этот ответ: https://stackoverflow.com/a/33344573/2537017

...