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?
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?
Odpowiedzi:
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:
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.exe
i 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.
MSTest.TestFramework
w tych projektach i usuń Microsoft.VisualStudio.QualityTools.UnitTestFramework
z nich odwołanie do . Teraz wszystko, czego potrzebujesz, to zainstalować narzędziamsbuild.exe
do kompilacji programu Visual Studio 2017 i wywołać kompilację.MSTest.exe
i do vstest.console.exe
któ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.exe
w Narzędziach do budowania.Na koniec i bardzo ważne: jeśli używasz MSTest.TestFramework
i nadal musisz mieć możliwość odnajdywania i uruchamiania testów w środowisku IDE programu Visual Studio, musisz również MSTest.TestAdapter
zainstalować 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).
File extension specified '.webtest' is not a valid test extension.
.
vswhere
jest 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ą.
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.
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.
@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.
Właśnie to działa na moich serwerach bez instalowania środowiska IDE programu Visual Studio 2017. Moje wymaganie było
Musiałem zrobić kombinację kilku rzeczy podanych w innych odpowiedziach, a potem jeszcze jedną tutaj .
VS2017:
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” )
Oto kroki, które podjąłem, aby uruchomić MsTest na moim serwerze kompilacji bez instalowania VS 2012:
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)
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>
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"