Чи можу я використовувати mstest.exe без встановлення Visual Studio?


108

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


Чи можете ви надати трохи детальніше. Яка версія? Побудувати сервер? тощо
Річард Бенкс

Відповіді:


168

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

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

Тут встановлено все необхідне для запуску mstest.exe з командного рядка і набагато легший за вагу, ніж візуальна студія. ~ 500 Мб завантаження і близько ~ 300 Мб, щоб встановити лише тестовий агент, якщо я правильно пам'ятаю.

ОНОВЛЕННЯ

Для версій, старших за VS 2017, дивіться тут:

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


Де MsTest.exe розміщується після встановлення TestAgent та TestController?
Євген Левін

3
C: \ Файли програм \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Чи є агент для Visual Studio 2008?
Томаш Кубес

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

1
Посилання на 2015 рік мертве. Випробувальних агентів зараз можна знайти через visualstudio.com/downloads/?q=agents
Onots

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в Інструментах побудови.

Нарешті, і що дуже важливо: якщо ви MSTest.TestFrameworkвсе-таки користуєтесь і все ще потребуєте вміння виявляти та запускати тести з IDE Visual Studio ID, вам також знадобиться MSTest.TestAdapterвстановити ваші тестові проекти (модулі).

1: Хоча VS2017 підтримує паралельні встановлення, він використовує єдиний ключ реєстру, який записує лише останню установку. Отже, якщо ви встановите тест-агент останнього, ключ вказуватиме на його каталог встановлення ... але тест-агент не включає MSBuild.exe, тому будь-який код, який спирається на цей ключ реєстру, щоб визначити шлях цього виконуваного файлу, не вийде. Чому Microsoft не міг зробити тест-агент необов'язковою частиною Інструментів збирання (так що всі EXE живуть в одній ієрархії каталогів) - це хтось здогадався.


Встановлюється за допомогою методу Test Agent, але mstest.exe File extension specified '.webtest' is not a valid test extension.для мене все ще не вдається .
Григорій Суваліан

Зараз є в іншому місці - дивіться інші питання, наприклад, " Програмно пошук каталогу встановлення VS2017 " або " MSBuild.exe не знайдено, cmd.exe ", які використовують його.
Вай Ха Лі

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

Так, це чи ні, це гра дратує. Я впевнений, що вони мають свої причини, але ....
Вай Ха Лі

@Ian Kemp Перш за все, я встановив тестовий агент та інструменти побудови, але я отримую помилку No test is available in C:\Users\..\Desktop\MyExeName.exe... . Я відкрив питання про СО . Якщо у вас є якісь підказки, я буду вдячний за вашу допомогу.
користувач1207289

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 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

Ось такі кроки, які я здійснив, щоб змусити сервер збирання запустити 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. *. Dlls з C: \ Windows \ Assembly в каталог "Mstest / Assemblys"
  6. Скопіюйте всі 'v11' Microsoft.VisualStudio.QualityTools. .dlls та Microsoft.VisualStudio.TestTools. .dlls з C: \ Windows \ Microsoft.NET \ Assembly \ GAC_MSIL до 'Mstest / Assemblys'
  7. Скопіюйте всі v11 Microsoft.VisualStudio.QualityTools. .dlls та Microsoft.VisualStudio.TestTools. .dll від C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies до 'Mstest / Assemblys'
  8. Додайте "асемблери" до атрибута "privatePath" у "Mstest.exe.config"
  9. Експорт 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools та застосуйте його до вікна Хадсона.
  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 / збори'
  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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.