Kann ich mstest.exe verwenden, ohne Visual Studio zu installieren?


108

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?


Können Sie etwas mehr Details liefern? Welche Version? Server bauen? usw.
Richard Banks

Antworten:


168

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:

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


Wo befindet sich MsTest.exe nach der Installation von TestAgent und TestController?
Evgeny Levin

3
C: \ Programme \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Gibt es einen Agenten für Visual Studio 2008?
Tomas Kubes

3
In meiner Gruppe ist nach der Installation der Visual Studio 2012-Testagenten ein Problem aufgetreten. Wir glauben, dass es einige der Registrierungswerte geändert und folglich ein Durcheinander von Visual Studio 2010-Inhalten verursacht hat, die sich auf demselben Computer befanden. In acht nehmen.
Stephen

1
Link für 2015 ist tot. Testagenten
Onots

18

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

  • Wenn Sie nur bauen Ihr Unit - Test - Projekt (s), installieren Sie das Paket MSTest.TestFrameworkin jenes Projekt (en) und den Verweis entfernen Microsoft.VisualStudio.QualityTools.UnitTestFrameworkvon ihnen. Jetzt müssen Sie nur noch die Visual Studio 2017-Build-Tools installieren und aufrufen msbuild.exe, um den Build auszuführen.
  • Wenn Sie auch Ihre Tests ausführen müssen , werden die Dinge schwieriger:
    • Die einfachste Lösung ist die Installation der VS2017 Community Edition (die sowohl msbuild als auch mstest enthält) - aber ich bin mir der Rechtmäßigkeit nicht sicher und bin kein Anwalt. Seien Sie also vorsichtig!
    • Eine rechtlich sicherere Lösung (und in Bezug auf den Speicherplatz weitaus leichter) besteht darin, den Visual Studio 2017-Testagenten zu installieren und anschließend Tools für Visual Studio 2017 zu erstellen ( genaue Reihenfolge ist von entscheidender Bedeutung 1 ). Dies gibt Ihnen MSTest.exeund vstest.console.exedie 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.exein Build Tools vorhanden sind.

Schließlich und sehr wichtig: Wenn Sie MSTest.TestFrameworkTests in der Visual Studio-IDE verwenden und dennoch erkennen und ausführen müssen, müssen Sie sie auch MSTest.TestAdapterin 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.exejeder 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.


Installiert über die Test Agent-Methode, aber mstest.exe schlägt bei File extension specified '.webtest' is not a valid test extension.mir immer noch fehl .
Gregory Suvalian

Es gibt jetzt vswhere - siehe andere Fragen, z. B. " Programmgesteuertes Suchen des VS2017-Installationsverzeichnisses " oder " MSBuild.exe nicht gefunden, cmd.exe ", die es verwenden.
Wai Ha Lee

@WaiHaLee vswhereist 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.
Ian Kemp

Ja, das ist es / ist es nicht da, das Spiel ist nervig. Ich bin sicher, sie haben ihre Gründe, aber ...
Wai Ha Lee

@ Ian Kemp Per oben habe ich Test Agent installiert und Tools erstellt, aber ich erhalte eine Fehlermeldung 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.
user1207289

4

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.


Für jede URL mit dem Wort "Hacking" muss der Wert des Aufwands in Frage gestellt werden, wenn MS beschließt, die Implementierung zu ändern. Ihre Umgebung kann volatil sein und bei jedem Windows-Update können unerwartete Ereignisse auftreten (wir führen regelmäßig Updates durch, oder?).
Russell

In diesem Fall ist es unwahrscheinlich, dass ein Windows-Update den Hack unterbricht. Eine neuere Version von mstest (z. B. innerhalb einer neueren Version oder eines Service Packs von VS) funktioniert jedoch möglicherweise anders.
Doc Brown

@Russell - Persönlich würde ich entweder eine zusätzliche VS-Lizenz erwerben oder stattdessen einfach NUnit verwenden.
Justin

Vielen Dank für alle Antworten, ich bekomme nur eine zusätzliche VS-Lizenz.
Yang-Qu

1
Als Autor des obigen Blogposts kann ich bestätigen, dass es funktioniert und dass es höchst unwahrscheinlich ist, dass es kaputt geht. Zumindest für VS2008. Ich habe mir das für VS2010 nicht angesehen. MSTest, das so tief in VS integriert ist, ist eine große Schwäche des Testkits, aber ich glaube nicht, dass MS es beheben wird, da es die Leute dazu ermutigt, Team System zu verwenden.
Foxxtrot

4

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


Als Referenz hier ein Beitrag von Microsoft auf diesem Blog.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow

2

Ich habe dies gerade auf meinen Servern zum Laufen gebracht, ohne die Visual Studio 2017-IDE zu installieren. Meine Anforderung war

  • Projekte erstellen
  • Erstellen Sie Testprojekte
  • Führen Sie Tests mit VSTest durch (ich glaube, es ist ein ähnlicher Prozess für MSTest).

Ich musste eine Kombination aus ein paar Dingen machen, die in anderen Antworten angegeben waren, und dann auch noch eine hier .

VS2017:

  1. BuildTools - Diese finden Sie auf der Microsoft-Downloadseite. Scrollen Sie dann nach unten zu "Tools für Visual Studio 2017" -> "Tools für Visual Studio 2017 erstellen ".
  2. TestAgent - Dies finden Sie auf der Microsoft-Downloadseite. Scrollen Sie dann nach unten zu "Tools für Visual Studio 2017" -> "Agents für Visual Studio 2017".
  3. Nuget-Paket mit der Visual Studio Unit Testing-DLL - Diese finden Sie hier

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". )


1

Hier sind die Schritte, die ich unternommen habe, um meinen Build-Server dazu zu bringen, MsTest auszuführen, ohne VS 2012 zu installieren:

  1. Erstellt den Verzeichnisordner 'Mstest' in c: \ dev.
  2. Kopiert 'Mstest.exe' und 'Mstest.exe.config' aus C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE in das Verzeichnis 'Mstest'
  3. Kopieren Sie Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll in das Verzeichnis 'Mstest'
  4. Erstellt das Verzeichnis 'Assemblys' im Ordner 'Mstest'
  5. Alle v11 Microsoft.VisualStudio.QualityTools. *. -Dlls wurden aus dem Verzeichnis C: \ Windows \ Assembly in das Verzeichnis 'Mstest / Assemblys' extrahiert
  6. Kopieren Sie alle 'v11' Microsoft.VisualStudio.QualityTools. .dlls und Microsoft.VisualStudio.TestTools. DLLs von C: \ Windows \ Microsoft.NET \ Assembly \ GAC_MSIL bis 'Mstest / Assemblys'
  7. Kopieren Sie alle v11 Microsoft.VisualStudio.QualityTools. .dlls und Microsoft.VisualStudio.TestTools. DLL von C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies zu 'Mstest / Assemblys'
  8. Fügen Sie dem Attribut 'privatePath' in 'Mstest.exe.config' 'Assemblys' hinzu.
  9. Exportieren Sie 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools und wenden Sie es auf die Hudson-Box an.
  10. Kopieren Sie QTAgent32.exe und QTAgent32.exe.config aus dem Verzeichnis C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE in das Verzeichnis 'MsTest'
  11. Fügen Sie dem Attribut 'privatePath' in 'QTAgent32.exe.config' 'Assemblys' hinzu.
  12. Kopieren Sie 'msdia110.dll' von 'C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' nach 'MsTest / Assemblys'.
  13. 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)

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

0

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"

0

MSTest wurde für .NET Core- Benutzer angekündigt . Die Ankündigung enthält ein Anwendungsbeispiel für das dotnetTool. Ich habe mir nicht überlegt, wie ich die eigenständige mstestausführbare Datei bekommen soll.


Link ist kaputt :-(
James

1
@ James Habe gerade den Link
behoben
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.