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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

  • Создана папка каталога "Mstest" в каталоге c:\dev.
  • Скопировано 'Mstest.exe' и 'Mstest.exe.config' из каталога C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE в каталог 'Mstest'
  • Скопируйте файл Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll в каталог 'Mstest'
  • Создан каталог 'assemblysies' в папке 'Mstest'
  • Извлечено все v11 файлы Microsoft.VisualStudio.QualityTools. *. dll из каталога C:\Windows\в каталог "Mstest/assemblylies"
  • Скопировать все 'v11' файлы Microsoft.VisualStudio.QualityTools..dll и файлы Microsoft.VisualStudio.TestTools..dll из C:\Windows\Microsoft.NET\assembly\GAC_MSIL в 'Mstest/assemblylies'
  • Скопировать все v11 файлы Microsoft.VisualStudio.QualityTools..dll и Microsoft.VisualStudio.TestTools..dll из C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies в 'Mstest/assemblylies'
  • Добавьте 'сборки' в атрибут 'privatePath' в 'Mstest.exe.config'
  • Экспортируйте 'HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/VisualStudio/11.0/Enterprise/QualityTools и примените его к ящику hudson.
  • Скопировать QTAgent32.exe и QTAgent32.exe.config в каталог 'MsTest' из C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
  • Добавьте 'сборки' в атрибут 'privatePath' в 'QTAgent32.exe.config'
  • Скопировать 'msdia110.dll' из 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger' в 'MsTest/assemblylies'
  • Зарегистрируйте 'msdia110.dll' с помощью c:/windows/syswow64/regsvr32.exe/i '../mstest/assemblies/msdia110.dll'( Это забросило ошибку, но по какой-то причине все еще работало Я проверил его пару раз и пробовал разные версии regsvr32.exe, прежде чем я проверил, но он там в реестре)

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

Отладка ошибки выполнения 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>