Ich möchte mstest.exe verwenden, um meinen Komponententest auf dem Build-Server auszuführen, aber ich möchte Visual Studio nicht auf dem Build-Server installieren. Kann ich MSTest einfach ohne Visual Studio installieren?
Ich möchte mstest.exe verwenden, um meinen Komponententest auf dem Build-Server auszuführen, aber ich möchte Visual Studio nicht auf dem Build-Server installieren. Kann ich MSTest einfach ohne Visual Studio installieren?
Antworten:
Es ist möglich, mstest.exe ohne Visual Studio auszuführen.
Laden Sie einen der unten aufgeführten Agenten für Visual Studio-ISO herunter und installieren Sie den Test-Agenten auf dem Server:
Visual Studio 2017 (127 MB Speicherplatz, weniger als der zum Herunterladen)
Visual Studio 2015 (128 MB Setup, 2 GB Speicherplatz erforderlich)
Visual Studio 2012 (224 MB)
Visual Studio 2013 (287 MB)
Visual Studio 2010 (515 MB)
Dies installiert alles, was zum Ausführen von mstest.exe über die Befehlszeile benötigt wird, und ist viel leichter als Visual Studio. ~ 500 MB Download und ca. 300 MB, um nur den Testagenten zu installieren, wenn ich mich richtig erinnere.
AKTUALISIEREN
Versionen, die älter als VS 2017 sind, finden Sie hier:
Diese Antwort bezieht sich speziell auf Visual Studio 2017 und lautet " Ja" . Beachten Sie jedoch, dass Microsoft (noch) keine offizielle API zum Auffinden der relevanten ausführbaren Dateien ( MSBuild.exe
und MSTest.exe
) bereitstellt , sodass Sie nicht mehr in der Lage sind, Registrierungsschlüssel zu lesen und / oder verschiedene Verzeichnisse zu durchsuchen, um diese Dateien zu finden . Du wurdest gewarnt.
MSTest.TestFramework
in jenes Projekt (en) und den Verweis entfernen Microsoft.VisualStudio.QualityTools.UnitTestFramework
von ihnen. Jetzt müssen Sie nur noch die Visual Studio 2017-Build-Tools installieren und aufrufen msbuild.exe
, um den Build auszuführen.MSTest.exe
und vstest.console.exe
die Sie dann anrufen können. Beachten Sie, dass es schwierig ist, herauszufinden, wo sich diese ausführbaren Dateien befinden, da sie nicht in derselben Verzeichnisstruktur wie MSBuild.exe
in Build Tools vorhanden sind.Schließlich und sehr wichtig: Wenn Sie MSTest.TestFramework
Tests in der Visual Studio-IDE verwenden und dennoch erkennen und ausführen müssen, müssen Sie sie auch MSTest.TestAdapter
in Ihren Unit-Test-Projekten installieren.
1: Während VS2017 Side-by-Side-Installationen unterstützt, wird ein einzelner Registrierungsschlüssel verwendet, der nur die letzte Installation aufzeichnet. Wenn Sie Test Agent zuletzt installieren, verweist der Schlüssel auf sein Installationsverzeichnis. Test Agent enthält ihn jedoch nicht. Daher schlägt MSBuild.exe
jeder Code fehl, der sich auf diesen Registrierungsschlüssel stützt, um den Pfad dieser ausführbaren Datei zu ermitteln. Warum Microsoft den Test Agent nicht zu einem optionalen Teil der Build Tools hätte machen können (sodass alle EXEs in derselben Verzeichnishierarchie leben), ist unklar.
File extension specified '.webtest' is not a valid test extension.
mir immer noch fehl .
vswhere
ist besser als nichts, aber Sie müssen immer noch davon ausgehen, wo sich MSBuild relativ zum VS-Installationsverzeichnis befindet. Wenn (wann?) Microsoft beschließt, eine dieser ausführbaren Dateien zu verschieben, ist diese Annahme nicht mehr gültig . Warum Microsoft keine programmatische Methode erstellen kann oder will, um den Pfad zu MSBuild / MSTest / VSTest zu erhalten (im Gegensatz zum VS-Installationsverzeichnis, das niemanden wirklich interessiert), bleibt mir ein Rätsel.
No test is available in C:\Users\..\Desktop\MyExeName.exe...
. Ich habe eine Frage zu SO geöffnet . Wenn Sie eine Ahnung haben, würde ich mich über Ihre Hilfe freuen.
Ich denke, Sie können wahrscheinlich, aber es wird definitiv nicht unterstützt.
Ich habe diesen Blog-Artikel gefunden, der von jemandem geschrieben wurde, der behauptet, MSTest ohne installiertes Visual Studio zu haben.
@crocpulsar, Sie müssen Visual Studio auf Ihrem Build-Server installieren, aber Sie müssen KEINE zusätzliche Lizenz kaufen .
Es gibt einfach zu viele Abhängigkeiten, um Build & MSTest ohne VS zum Laufen zu bringen, und es wird definitiv nicht unterstützt.
Solange die Person, die den Build startet, über eine Lizenz verfügt, benötigen Sie keine für den Build-Server. Dies ist seit den dunklen Tagen des Jahres 2005 der Fall, und solange es eine Editionsparität gibt, sind Sie in Ordnung.
Wenn jeder in Ihrem Team Ultimate hat, können Sie es auf dem Build-Server installieren. Wenn jedoch eines Ihrer Teammitglieder über Premium verfügt, sollten Sie Premium idealerweise auf dem Build-Server installieren. Dies ermöglicht auch viele andere Elemente wie Code Coverage, Test Impact Analysis und Architecture Validation.
Ich habe dies gerade auf meinen Servern zum Laufen gebracht, ohne die Visual Studio 2017-IDE zu installieren. Meine Anforderung war
Ich musste eine Kombination aus ein paar Dingen machen, die in anderen Antworten angegeben waren, und dann auch noch eine hier .
VS2017:
Schritt 3 bestand darin, das folgende Problem zu beheben:
"Diese Referenz konnte nicht aufgelöst werden. Die Assembly" Microsoft.VisualStudio.QualityTools.UnitTestFramework "konnte nicht gefunden werden.
Was dann verursachte:
"Fehler CS0234: Der Typ- oder Namespace-Name 'VisualStudio' ist im Namespace 'Microsoft' nicht vorhanden (fehlt Ihnen eine Assembly-Referenz?)"
Ich musste dem Projekt keine Referenzen hinzufügen. Der Pfad zur Datei vstest.console.exe befindet sich jedoch im Ordner TestAgent (für mich war er "C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow". )
Hier sind die Schritte, die ich unternommen habe, um meinen Build-Server dazu zu bringen, MsTest auszuführen, ohne VS 2012 zu installieren:
Registrieren Sie 'msdia110.dll' mit c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Dies hat einen Fehler ausgelöst, aber aus irgendeinem Grund hat es immer noch funktioniert. Ich habe es ein paar Mal ausgeführt mal und habe verschiedene regsvr32.exe-Versionen ausprobiert, bevor ich nachgesehen habe, aber es ist dort in der Registrierung)
Fügen Sie die Umgebungsvariable 'MSTEST_HOME' hinzu und setzen Sie sie auf 'c: \ dev \ mstest \' oder auf Ihren Pfad. Ich habe die Umgebungsvariable in meinem Build-Skript verwendet.
Debugging-Fehler bei der Ausführung von MsTest:
Zu 'MsTest.exe.config' hinzufügen
<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>
Wenn Sie das Webtest-Tool mstest.exe ausführen müssen, können Sie die Visual Studio Enterprise-Testversion installieren und sicherstellen, dass sie mindestens einmal ausgeführt wird (starten Sie sie einfach), unter welchem Konto der Test ausgeführt wird, ohne dass zusätzliche Maßnahmen erforderlich sind. Wenn Ihr Test unter Systemkonto ausgeführt wird, müssen Sie Folgendes verwenden
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"
MSTest wurde für .NET Core- Benutzer angekündigt . Die Ankündigung enthält ein Anwendungsbeispiel für das dotnet
Tool. Ich habe mir nicht überlegt, wie ich die eigenständige mstest
ausführbare Datei bekommen soll.