Могу ли я использовать mstest.exe без установки Visual Studio? - PullRequest
101 голосов
/ 04 августа 2010

Я хочу использовать mstest.exe для запуска моего модульного теста на сервере сборки, но я не хочу устанавливать Visual Studio на сервере сборки. Могу ли я просто установить MSTest без Visual Studio?

Ответы [ 8 ]

161 голосов
/ 06 февраля 2012

Можно запустить mstest.exe без Visual Studio.
Загрузите один из Агентов для ISO для Visual Studio ниже и установите Тестовый агент на сервере:

Visual Studio 2017 (127 МБ на диске, меньше, чем для загрузки)
Visual Studio 2015 (установка 128 МБ, требуется 2 ГБ на диске)
Visual Studio 2012 (224 МБ)
Visual Studio 2013 (287 МБ)
Visual Studio 2010 (515 МБ)

Это устанавливает все необходимое для запуска mstest.exeиз командной строки и гораздо легче, чем визуальная студия.Загрузка ~ 500 МБ и около 300 МБ для установки только тестового агента, если я правильно помню.

ОБНОВЛЕНИЕ

Для версий более старых, чем VS 2017, посмотрите здесь:

https://www.visualstudio.com/vs/older-downloads/

12 голосов
/ 17 мая 2017

Этот ответ относится конкретно к Visual Studio 2017, а ответ да . Однако имейте в виду, что Microsoft (до сих пор) не предоставляет какого-либо официального API для поиска соответствующих исполняемых файлов (MSBuild.exe и MSTest.exe), поэтому вы застряли, читая ключи реестра и / или исследуя различные каталоги для поиска этих файлов . Вы были предупреждены.

  • Если вам нужно только собрать свой проект (ы) модульного тестирования, установите пакет MSTest.TestFramework в эти проекты и удалите ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework из их. Теперь все, что вам нужно, это установить Visual Studio 2017 Build Tools и вызвать msbuild.exe для выполнения сборки.
  • Если вам нужно запустить ваши тесты, все становится сложнее:
    • Самое простое решение - установить VS2017 Community Edition (который включает в себя как msbuild, так и mstest) - , но я не уверен в законности этого, и я не юрист, поэтому будьте осторожны!
    • Юридически более безопасное решение (и намного более легкое с точки зрения дискового пространства) заключается в установке Visual Studio 2017 Test Agent и , а затем Инструменты сборки для Visual Studio 2017 ( точный порядок жизненно важен 1 ); это даст вам MSTest.exe и vstest.console.exe, которые вы затем сможете вызвать. Обратите внимание, что на самом деле выяснить, где находятся эти исполняемые файлы, очень сложно, потому что они не будут существовать в той же структуре каталогов, что и MSBuild.exe в Build Tools.

Наконец, и это очень важно: если вы используете MSTest.TestFramework и вам все еще нужно иметь возможность обнаруживать и запускать тесты из среды Visual Studio IDE, вам также потребуется установить MSTest.TestAdapter в ваш модульный тестовый проект (ы).

1: VS2017 поддерживает параллельную установку, но использует один ключ реестра, который записывает только самые последние установки. Следовательно, если вы устанавливаете Test Agent последним, ключ будет указывать на его каталог установки ... но Test Agent не включает MSBuild.exe, поэтому любой код, использующий этот раздел реестра для определения пути к исполняемому файлу, не будет работать. Почему Microsoft не могла сделать Test Agent необязательной частью инструментов сборки (чтобы все EXE-файлы находились в одной иерархии каталогов), можно только догадываться.

4 голосов
/ 08 августа 2010

@ crocpulsar, вам нужно установить Visual Studio на свой сервер сборки, , но вам НЕ нужно покупать дополнительную лицензию .

Существует слишком много зависимостей, чтобы заставить build & MSTest работать без установленного VS, и это определенно не поддерживается.

Пока у человека, который запускает сборку, есть лицензия, она не нужна для сервера сборки. Это имело место с мрачных дней 2005 года, и до тех пор, пока существует паритет издания, с вами все в порядке.

Если у всех в вашей команде есть Ultimate, вы можете установить его на сервер сборки; но если у одного из членов вашей команды есть Premium, то в идеале вы должны установить Premium на сервер сборки. Это также позволяет использовать множество других битов, таких как покрытие кода, анализ влияния тестирования и проверка архитектуры.

4 голосов
/ 04 августа 2010

Я думаю, что вы, вероятно, можете, но это определенно не поддерживается.

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

1 голос
/ 11 июля 2018

Я только что установил это на своих серверах без установки Visual Studio 2017 IDE. Мое требование было

  • Сборка проектов
  • Сборка тестовых проектов
  • Запуск тестов с использованием VSTest (я полагаю, что аналогичный процесс для MSTest)

Мне пришлось сделать комбинацию из нескольких вещей, изложенных в других ответах, а затем еще одну здесь .

VS2017:

  1. BuildTools - это можно найти на странице загрузок Microsoft , а затем прокрутить вниз до «Инструменты для Visual Studio 2017» -> «Инструменты сборки для Visual Studio 2017»
  2. TestAgent - это можно найти на странице загрузок Microsoft , а затем прокрутить вниз до «Инструменты для Visual Studio 2017» -> «Агенты для Visual Studio 2017»
  3. Nuget Package для включения dll для визуального тестирования студийного модуля - Вы можете найти здесь

Шаг 3 заключался в устранении следующей проблемы:

"Не удалось разрешить эту ссылку. Не удалось найти сборку" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Что тогда вызвало:

"ошибка CS0234: имя типа или пространства имен 'VisualStudio' не существует в пространстве имен 'Microsoft' (отсутствует ссылка на сборку?)"

Мне не нужно было добавлять какие-либо ссылки на проект. Однако путь к vstest.console.exe содержится в папке TestAgent (для меня это был «C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow» )

1 голос
/ 12 апреля 2013

Вот шаги, которые я предпринял, чтобы заставить мой сервер сборки запускать MsTest без установки VS 2012:

  1. Создана папка каталога Mstest в каталоге c: \ dev.
  2. Скопировано«Mstest.exe» и «Mstest.exe.config» из C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE в каталог «Mstest»
  3. Скопируйте Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll в каталог «Mstest»
  4. Создан каталог «сборок» в папке «Mstest»
  5. Извлечены все v11 Microsoft.VisualStudio.QualityTools. *. dll из C: \ Windows \ assembly to 'Каталог Mstest / assembly
  6. Скопируйте все v11 Microsoft.VisualStudio.QualityTools. .dlls и Microsoft.VisualStudio.TestTools. .dll из C: \ Windows \ Microsoft.NET \ assembly\ GAC_MSIL в «Mstest / сборки»
  7. Скопируйте все v11 Microsoft.VisualStudio.QualityTools. .dlls и Microsoft.VisualStudio.TestTools. .dll из C: \ Program Files (x86) \Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssembliesв 'Mstest / сборки'
  8. Добавить 'сборки' в атрибут 'privatePath' в 'Mstest.exe.config'
  9. Экспорт 'HKEY_LOCAL_MACHINE / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / Wow6432Node / Microsoft / VisualStudio / 11.0/ Enterprise / QualityTools и примените его к hudson box.
  10. Скопируйте QTAgent32.exe и QTAgent32.exe.config в каталог «MsTest» из C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Добавить «сборки» к атрибуту «privatePath» в «QTAgent32.exe.config»
  12. Скопировать «msdia110.dll» из C: \ Program Files (x86) \ Microsoft VisualStudio 11.0 \ Common7 \ Packages \ Debugger 'в' MsTest / сборки '
  13. Зарегистрируйте' msdia110.dll 'с помощью c: /windows/syswow64/regsvr32.exe / i' ../mstest/assemblies/msdia110.dll'( Это выдало ошибку, но по некоторым причинам это все еще работало.Я запускал его пару раз и пробовал разные версии regsvr32.exe, прежде чем я проверил, но он есть в реестре)

  14. Добавьте переменную окружения 'MSTEST_HOME' и установите для нее значение 'c: \dev \ mstest \ 'или на ваш путь.Я использовал переменную окружения в своем скрипте сборки.

Отладка Ошибка выполнения MsTest:

Добавить в 'MsTest.exe.config'

<system.diagnostics> 
  <trace autoflush="true" indentsize="4"> 
    <listeners> 
      <add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\MsTest.log" /> 
    </listeners> 
  </trace> 
  <switches> 
    <add name="EqtTraceLevel" value="Verbose" /> 
  </switches> 
</system.diagnostics>
0 голосов
/ 26 июня 2018

Если вам нужно запустить mstest.exe webtest tool, вы можете установить пробную версию Visual Studio Enterprise и обязательно запустить ее хотя бы один раз (просто запустите) под учетной записью, под которой будет выполняться тест, без каких-либо дополнительных действий. , Так что, если ваш тестовый запуск выполняется под учетной записью System, вам нужно использовать что-то вроде ниже

PS C:\agent> psexec -s cmd.exe
C:\Windows\system32>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\mstest.exe"
Microsoft (R) Test Execution Command Line Tool Version 15.0.27520.0
Copyright (c) Microsoft Corporation. All rights reserved.

Please specify tests to run, or specify the /publish switch to publish results.
For switch syntax, type "MSTest /help"
0 голосов
/ 30 августа 2016

MSTest был объявлен для пользователей .NET Core . У объявления есть пример использования с инструментом dotnet. Я так и не понял, как получить автономный mstest исполняемый файл.

...