Czy mogę używać programu mstest.exe bez instalowania programu Visual Studio?

108

Chcę użyć programu mstest.exe, aby uruchomić mój test jednostkowy na serwerze kompilacji, ale nie chcę instalować programu Visual Studio na serwerze kompilacji. Czy mogę po prostu zainstalować MSTest bez programu Visual Studio?

yang-qu
źródło
Czy możesz podać trochę więcej szczegółów. Jaka wersja? Zbudować serwer? itd.
Richard Banks

Odpowiedzi:

168

Możliwe jest uruchomienie mstest.exe bez programu Visual Studio.
Pobierz jednego z agentów dla obrazu ISO programu Visual Studio poniżej i zainstaluj agenta testowego na serwerze:

Visual Studio 2017 (127 MB miejsca na dysku, mniej niż do pobrania)
Visual Studio 2015 (konfiguracja 128 MB, wymagane 2 GB miejsca na dysku)
Visual Studio 2012 (224 MB)
Visual Studio 2013 (287 MB)
Visual Studio 2010 (515 MB)

Instaluje wszystko, co jest potrzebne do uruchomienia programu mstest.exe z wiersza poleceń i jest znacznie lżejszy niż program Visual Studio. ~ 500 MB do pobrania i około ~ 300 MB do zainstalowania tylko agenta testowego, jeśli dobrze pamiętam.

AKTUALIZACJA

W przypadku wersji starszych niż VS 2017 spójrz tutaj:

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

Bela
źródło
Gdzie MsTest.exe jest umieszczany po zainstalowaniu TestAgent i TestController?
Evgeny Levin
3
C: \ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole
1
Czy istnieje agent dla programu Visual Studio 2008?
Tomas Kubes,
3
Moja grupa napotkała problem po zainstalowaniu agentów testowych programu Visual Studio 2012. Uważamy, że zmodyfikował niektóre wartości rejestru i w konsekwencji spowodował bałagan w programie Visual Studio 2010, który znajdował się na tym samym komputerze. Strzec się.
Stephen
1
Link do roku 2015 nie żyje. Agentów testowych można teraz znaleźć na stronie visualstudio.com/downloads/?q=agents
Onots,
18

Ta odpowiedź dotyczy w szczególności programu Visual Studio 2017, a odpowiedź brzmi tak . Należy jednak pamiętać, że firma Microsoft (nadal) nie udostępnia żadnego oficjalnego interfejsu API do lokalizowania odpowiednich plików wykonywalnych ( MSBuild.exei MSTest.exe), więc utkniesz w czytaniu kluczy rejestru i / lub przeszukiwaniu różnych katalogów w celu zlokalizowania tych plików . Zostałeś ostrzeżony.

  • Jeśli potrzebujesz tylko skompilować projekty testów jednostkowych, zainstaluj pakiet MSTest.TestFrameworkw tych projektach i usuń Microsoft.VisualStudio.QualityTools.UnitTestFrameworkz nich odwołanie do . Teraz wszystko, czego potrzebujesz, to zainstalować narzędziamsbuild.exe do kompilacji programu Visual Studio 2017 i wywołać kompilację.
  • Jeśli musisz również przeprowadzić testy, sprawy stają się trudniejsze:
    • Najprostszym rozwiązaniem jest zainstalowanie VS2017 Community Edition (która zawiera zarówno msbuild, jak i mstest) - ale nie jestem pewien co do legalności i nie jestem prawnikiem, więc bądź ostrożny!
    • Bezpieczniejszym z prawnego punktu widzenia rozwiązaniem (i znacznie lżejszym pod względem miejsca na dysku) jest zainstalowanie agenta testowego programu Visual Studio 2017, a następnie Build Tools for Visual Studio 2017 ( dokładna kolejność jest istotna 1 ); to ci da MSTest.exei do vstest.console.exektórego możesz wtedy zawołać. Zwróć uwagę, że ustalenie, gdzie znajdują się te pliki wykonywalne, jest uciążliwe, ponieważ nie będą one istnieć w tej samej strukturze katalogów, co MSBuild.exew Narzędziach do budowania.

Na koniec i bardzo ważne: jeśli używasz MSTest.TestFrameworki nadal musisz mieć możliwość odnajdywania i uruchamiania testów w środowisku IDE programu Visual Studio, musisz również MSTest.TestAdapterzainstalować je w projektach testów jednostkowych.

1: Chociaż VS2017 obsługuje instalacje równoległe, używa jednego klucza rejestru, który rejestruje tylko ostatnią instalację. W związku z tym, jeśli zainstalujesz agenta testowego jako ostatni, klucz wskaże jego katalog instalacyjny ... ale agent testowy go nie zawiera MSBuild.exe, więc każdy kod, który opiera się na tym kluczu rejestru w celu ustalenia ścieżki tego pliku wykonywalnego, zakończy się niepowodzeniem. Nikt nie wie, dlaczego Microsoft nie mógł uczynić agenta testowego opcjonalną częścią narzędzi do budowania (tak, aby wszystkie pliki EXE znajdują się w tej samej hierarchii katalogów).

Ian Kemp
źródło
Zainstalowany przy użyciu metody agenta testowego, ale mstest.exe nadal nie działa File extension specified '.webtest' is not a valid test extension..
Gregory Suvalian
Jest teraz vswhere - zobacz inne pytania, np. „ Programowe znajdowanie katalogu instalacyjnego VS2017 ” lub „ Nie znaleziono MSBuild.exe, cmd.exe ”, które go używają.
Wai Ha Lee
@WaiHaLee vswherejest lepsze niż nic, ale nadal musisz przyjąć założenie, gdzie znajduje się MSBuild w stosunku do katalogu instalacyjnego VS ... jeśli (kiedy?) Microsoft zdecyduje się przenieść którykolwiek z tych plików wykonywalnych, to założenie nie jest już aktualne . Dlaczego Microsoft nie może lub nie chce stworzyć programowego sposobu na uzyskanie ścieżki do MSBuild / MSTest / VSTest (w przeciwieństwie do katalogu instalacyjnego VS, którego nikt tak naprawdę nie dba) pozostaje poza mną.
Ian Kemp
Tak, czy to jest / czyż nie jest gra jest denerwująca. Jestem pewien, że mają swoje powody, ale…
Wai Ha Lee
@Ian Kemp Per powyżej, zainstalowałem agenta testowego i narzędzia do kompilacji, ale otrzymuję błąd No test is available in C:\Users\..\Desktop\MyExeName.exe... . Otworzyłem pytanie na SO . Jeśli masz jakieś wskazówki, będę wdzięczny za pomoc.
user1207289
4

Myślę, że prawdopodobnie możesz, ale zdecydowanie nie jest obsługiwany.

Znalazłem ten artykuł na blogu napisany przez kogoś, kto twierdzi, że MSTest działa bez zainstalowanego programu Visual Studio.

Justin
źródło
Każdy adres URL ze słowem Hacking naprawdę wymaga zakwestionowania wartości wysiłku, jeśli MS zdecyduje się zmienić swoją implementację, twoje środowisko może być niestabilne i nieoczekiwane rzeczy mogą się zdarzyć z każdą aktualizacją systemu Windows (regularnie aktualizujemy, prawda?).
Russell
W takim przypadku wydaje się mało prawdopodobne, aby aktualizacja systemu Windows przerwała włamanie. Jednak nowsza wersja mstest (na przykład w nowszej wersji lub dodatku Service Pack VS) może działać inaczej.
Doc Brown
@Russell - Osobiście albo wybrałbym dodatkową licencję VS, albo po prostu użyłbym NUnit.
Justin
Dzięki za wszystkie odpowiedzi, po prostu dostanę dodatkową licencję VS.
yang-qu
1
Jako autor powyższego posta na blogu mogę zaświadczyć, że działa i jest mało prawdopodobne, że się zepsuje. Przynajmniej dla VS2008. Nie patrzyłem na to dla VS2010. MSTest tak głęboko zintegrowany z VS jest ogromną słabością zestawu testowego, ale nie sądzę, aby MS to naprawił, ponieważ zachęca ludzi do korzystania z Systemu zespołowego.
foxxtrot
4

@crocpulsar, musisz zainstalować program Visual Studio na serwerze kompilacji, ale NIE musisz kupować dodatkowej licencji .

Jest zbyt wiele zależności, aby kompilacja i MSTest działały bez zainstalowanego VS, a na pewno nie jest to obsługiwane.

Tak długo, jak osoba, która rozpoczyna kompilację, ma licencję, nie potrzebujesz jej na serwer kompilacji. Dzieje się tak od ciemnych dni 2005 r. I dopóki istnieje parzystość edycji, wszystko jest w porządku.

Jeśli wszyscy w twoim zespole mają Ultimate, możesz zainstalować go na serwerze kompilacji; ale jeśli któryś z członków twojego zespołu ma Premium, powinieneś zainstalować Premium na serwerze kompilacji. Umożliwia to również wiele innych bitów, takich jak pokrycie kodu, analiza wpływu testów i walidacja architektury.

MrHinsh - Martin Hinshelwood
źródło
Dla odniesienia tutaj jest post od Microsoft na tym blogs.msdn.com/b/jeffbe/archive/2008/03/18/...
Maslow
2

Właśnie to działa na moich serwerach bez instalowania środowiska IDE programu Visual Studio 2017. Moje wymaganie było

  • Twórz projekty
  • Twórz projekty testowe
  • Uruchom testy przy użyciu VSTest (uważam, że jest to podobny proces dla MSTest)

Musiałem zrobić kombinację kilku rzeczy podanych w innych odpowiedziach, a potem jeszcze jedną tutaj .

VS2017:

  1. BuildTools - można je znaleźć na stronie pobierania firmy Microsoft , a następnie przewinąć w dół do pozycji „Narzędzia dla programu Visual Studio 2017” -> „Narzędzia kompilacji dla programu Visual Studio 2017”
  2. TestAgent - można go znaleźć na stronie pobierania firmy Microsoft , a następnie przewinąć w dół do „Tools for Visual Studio 2017” -> „Agents for Visual Studio 2017”
  3. Pakiet NuGet zawierający bibliotekę DLL testów jednostkowych programu Visual Studio - można ją znaleźć tutaj

Krok 3 polegał na rozwiązaniu następującego problemu:

„Nie można rozwiązać tego odwołania. Nie można zlokalizować zestawu„ Microsoft.VisualStudio.QualityTools.UnitTestFramework ””

Co spowodowało:

„Błąd CS0234: Nazwa typu lub przestrzeni nazw„ VisualStudio ”nie istnieje w przestrzeni nazw„ Microsoft ”(czy brakuje odwołania do zestawu?)”

Nie musiałem dodawać żadnych odniesień do projektu. Jednak ścieżka do pliku vstest.console.exe znajduje się w folderze TestAgent (dla mnie była to „C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow” )

Andy
źródło
1

Oto kroki, które podjąłem, aby uruchomić MsTest na moim serwerze kompilacji bez instalowania VS 2012:

  1. Utworzono folder katalogu „Mstest” w c: \ dev.
  2. Skopiowano „Mstest.exe” i „Mstest.exe.config” z C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE do katalogu „Mstest”
  3. Skopiuj Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll do katalogu „Mstest”
  4. Utworzono katalog „assemblies” w folderze „Mstest”
  5. Wyodrębniono wszystkie v11 Microsoft.VisualStudio.QualityTools. *. Dlls z C: \ Windows \ assembly do katalogu „Mstest / assemblies”
  6. Skopiuj wszystko Microsoft.VisualStudio.QualityTools 'v11'. .dlls i Microsoft.VisualStudio.TestTools. .dlls z C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL do „Mstest / assemblies”
  7. Skopiuj wszystkie v11 Microsoft.VisualStudio.QualityTools. .dlls i Microsoft.VisualStudio.TestTools. .dll z C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies do „Mstest / assemblies”
  8. Dodaj „assemblies” do atrybutu „privatePath” w „Mstest.exe.config”
  9. Wyeksportuj 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools i zastosuj go do hudson box.
  10. Skopiuj QTAgent32.exe i QTAgent32.exe.config do katalogu „MsTest” z C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Dodaj „assemblies” do atrybutu „privatePath” w „QTAgent32.exe.config”
  12. Skopiuj „msdia110.dll” z „C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger” do „MsTest / assemblies”
  13. Zarejestruj 'msdia110.dll' w c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll' (spowodowało to błąd, ale z jakiegoś powodu nadal działało. Uruchomiłem go kilka razy i próbowałem różnych wersji regsvr32.exe przed sprawdzeniem, ale jest tam w rejestrze)

  14. Dodaj zmienną środowiskową „MSTEST_HOME” i ustaw ją na „c: \ dev \ mstest \” lub na swoją ścieżkę. Użyłem zmiennej środowiskowej w moim skrypcie kompilacji.

Błąd wykonania debugowania MsTest:

Dodaj do „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>
Dai Le
źródło
0

Jeśli potrzebujesz uruchomić narzędzie do testowania sieci web mstest.exe, możesz zainstalować wersję próbną programu Visual Studio Enterprise i upewnić się, że uruchomisz go co najmniej raz (po prostu uruchom) na koncie, na którym będzie uruchamiany test, bez dodatkowych czynności. Więc jeśli twój test został uruchomiony na koncie systemowym, musisz użyć czegoś takiego jak poniżej

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"
Gregory Suvalian
źródło
0

MSTest został ogłoszony dla użytkowników .NET Core . Ogłoszenie zawiera przykład użycia z dotnetnarzędziem. Nie wymyśliłem sobie, jak uzyskać samodzielny mstestplik wykonywalny.

user7610
źródło
Link jest uszkodzony :-(
Jakuba
1
@James Właśnie poprawiłem link
user7610