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


108

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


Можете рассказать поподробнее. Какая версия? Создать сервер? и т. д.
Ричард Бэнкс,

Ответы:


168

Можно запустить 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 из командной строки и намного легче, чем Visual Studio. ~ 500 МБ загрузки и около ~ 300 МБ для установки только тестового агента, если я правильно помню.

ОБНОВИТЬ

Для версий старше VS 2017 смотрите здесь:

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


Где размещается MsTest.exe после установки TestAgent и TestController?
Евгений Левин

3
C: \ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Есть ли агент для Visual Studio 2008?
Tomas Kubes

3
Моя группа столкнулась с проблемой после установки тестовых агентов Visual Studio 2012. Мы думаем, что он изменил некоторые значения реестра и, как следствие, внес беспорядок в Visual Studio 2010, который находился на той же машине. Осторожно.
Стивен

1
Ссылка на 2015 год мертва. Теперь тестовые агенты можно найти на visualstudio.com/downloads/?q=agents
Онотс,

18

Этот ответ относится конкретно к 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, а затем инструментов сборки для Visual Studio 2017 ( точный порядок важен 1 ); это даст вам, MSTest.exeи vstest.console.exeвы можете затем позвонить. Обратите внимание, что на самом деле выяснить, где находятся эти исполняемые файлы, сложно, потому что они не будут существовать в той же структуре каталогов, что и MSBuild.exeв Build Tools.

И, наконец, что очень важно: если вы используете MSTest.TestFrameworkи по-прежнему нуждаетесь в возможности обнаруживать и запускать тесты из среды разработки Visual Studio, вам также необходимо MSTest.TestAdapterустановить их в свои проекты модульного тестирования.

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


Установлен с помощью метода тестового агента, но mstest.exe все еще не работает File extension specified '.webtest' is not a valid test extension..
Gregory Suvalian

Теперь есть vswhere - см. Другие вопросы, например « Программный поиск каталога установки VS2017 » или « MSBuild.exe не найден, cmd.exe », которые его используют.
Вай Ха Ли

@WaiHaLee vswhereлучше, чем ничего, но вам все равно нужно сделать предположение о том, где находится MSBuild относительно каталога установки VS ... если (когда?) Microsoft решит переместить любой из этих исполняемых файлов, это предположение больше не верно . Почему Microsoft не может или не хочет создать программный способ получения пути к MSBuild / MSTest / VSTest (в отличие от каталога установки VS, который никого не волнует) остается за мной.
Ян Кемп

Ага, вот это / разве там игра раздражает. Я уверен, что у них есть свои причины, но ....
Вай Ха Ли

@Ian Kemp Per выше, я установил тестовый агент и инструменты сборки, но получаю ошибку No test is available in C:\Users\..\Desktop\MyExeName.exe... . Я открыл вопрос по ТАК . Если у вас есть какие-то подсказки, буду благодарен за вашу помощь.
user1207289

4

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

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


Любой URL со словом Hacking действительно требует сомнений в ценности усилий, если MS решит изменить свою реализацию, ваша среда может быть нестабильной, и с каждым обновлением Windows могут происходить непредвиденные вещи (мы регулярно обновляем, верно?).
Рассел

В этом случае кажется маловероятным, что обновление Windows сломает взлом. Но более новая версия mstest (например, в более новой версии или пакете обновления VS) может работать иначе.
Док Браун,

@Russell - Лично я бы либо выложил за дополнительную лицензию VS, либо просто использовал NUnit.
Джастин

Спасибо за все ответы, я просто получу дополнительную лицензию VS.
ян-цюй

1
Как автор вышеупомянутого сообщения в блоге, я могу засвидетельствовать, что он действительно работает и вряд ли сломается. По крайней мере, для VS2008. Я не смотрел на это для VS2010. MSTest, столь глубоко интегрированный в VS, является огромным недостатком тестового набора, но я не думаю, что MS исправит это, поскольку он побуждает людей использовать Team System.
foxxtrot

4

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

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

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

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


Для справки вот сообщение от Microsoft на этом blogs.msdn.com/b/jeffbe/archive/2008/03/18/…
Маслоу,

2

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

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

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

VS2017:

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

Шаг 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

Вот шаги, которые я предпринял, чтобы заставить мой сервер сборки запускать 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. *. Из C: \ Windows \ assembly в каталог Mstest / assemblies.
  6. Скопируйте все 'v11' Microsoft.VisualStudio.QualityTools. .dlls и Microsoft.VisualStudio.TestTools. .dll из C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL в 'Mstest / Assemblies'
  7. Скопируйте все v11 Microsoft.VisualStudio.QualityTools. .dlls и Microsoft.VisualStudio.TestTools. .dll из C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies в 'Mstest / Assemblies'
  8. Добавьте сборки в атрибут privatePath файла Mstest.exe.config.
  9. Экспортируйте HKEY_LOCAL_MACHINE / SOFTWARE / 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 Visual Studio 11.0 \ Common7 \ Packages \ Debugger в MsTest / Assemblies.
  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

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

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

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


Ссылка не работает :-(
Джеймс

1
@James Только что исправил ссылку
user7610
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.