web-dev-qa-db-fra.com

Puis-je utiliser mstest.exe sans installer Visual Studio?

Je souhaite utiliser mstest.exe pour exécuter mon test unitaire sur le serveur de génération, mais je ne souhaite pas installer Visual Studio sur le serveur de génération. Puis-je simplement installer MSTest sans Visual Studio?

96
yang-qu

Il est possible de lancer mstest.exe sans Visual Studio.
Téléchargez l’un des fichiers ISO des agents pour Visual Studio ci-dessous et installez le Test Agent sur le serveur:

Visual Studio 2017 (127 Mo d'espace disque, moins que pour le téléchargement)
Visual Studio 2015 (installation de 128 Mo, 2 Go d’espace disque requis)
Visual Studio 2012 (224Mo)
Visual Studio 2013 (287 Mo)
Visual Studio 2010 (515 Mo) 

Cela installe tout ce qui est nécessaire pour exécuter mstest.exe à partir de la ligne de commande et est beaucoup plus léger que Visual Studio. ~ 500 Mo à télécharger et environ ~ 300 Mo à installer uniquement l’agent de test, si je me souviens bien.

METTRE À JOUR

Pour les versions antérieures à VS 2017, regardez ici:

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

154
Bela

Cette réponse concerne spécifiquement Visual Studio 2017 et la réponse est yes. Sachez toutefois que Microsoft (encore) ne fournit aucune sorte d’API officielle permettant de localiser les fichiers exécutables pertinents (MSBuild.exe et MSTest.exe), de sorte que vous êtes bloqué en train de lire les clés de registre et/ou de sonder divers répertoires pour localiser ces fichiers Tu as été prévenu.

  • Si vous devez uniquement construire votre (vos) projet (s) de test unitaire, installez le package MSTest.TestFramework dans ces projets et supprimez la référence à Microsoft.VisualStudio.QualityTools.UnitTestFramework. Désormais, il ne vous reste plus qu'à installer les outils de génération Visual Studio 2017 et à appeler msbuild.exe pour effectuer la construction.
  • Si vous avez également besoin de exécuter vos tests, les choses deviennent plus compliquées:
    • La solution la plus simple consiste à installer VS2017 Community Edition (qui inclut à la fois msbuild et mstest) - mais je ne suis pas sûr de la légalité de cette opération et je ne suis pas avocat, soyez donc prudent!
    • Une solution juridiquement plus sûre (et beaucoup plus légère, en termes d’espace disque) consiste à installer Agent de test Visual Studio 2017 et puisConstruire des outils pour Visual Studio 2017 (exact l'ordre est vital1) ceci vous donnera MSTest.exe et vstest.console.exe que vous pourrez ensuite appeler. Notez qu’il est difficile de savoir où se trouvent ces exécutables, car ils n’existeront pas dans la même structure de répertoires que MSBuild.exe dans Build Tools.

Enfin et surtout, si vous utilisez MSTest.TestFramework et que vous devez toujours être en mesure de découvrir et d’exécuter des tests à partir de Visual Studio IDE, vous aurez également besoin de MSTest.TestAdapter installé dans vos projets de test unitaire.

1: Bien que VS2017 prenne en charge les installations côte à côte, il utilise une seule clé de registre qui enregistre uniquement la dernière installation. Par conséquent, si vous installez Test Agent en dernier, la clé pointe vers son répertoire d'installation ... mais Test Agent n'inclut pas MSBuild.exe. Par conséquent, tout code reposant sur cette clé de registre pour déterminer le chemin de cet exécutable échouera. Pourquoi quiconque n'aurait pas pu faire de l'agent de test un élément facultatif des outils de construction (afin que tous les fichiers EXE se trouvent dans la même hiérarchie de répertoires)?.

12
Ian Kemp

Je pense que vous pouvez probablement, mais ce n'est certainement pas pris en charge.

J'ai trouvé cet article de blog écrit par quelqu'un qui prétend que MSTest fonctionne sans que Visual Studio ne soit installé.

4
Justin

@crocpulsar, vous devez installer Visual Studio sur votre serveur de génération, mais vous n'avez PAS besoin d'acheter une licence supplémentaire .

Il y a beaucoup trop de dépendances pour que build & MSTest fonctionne sans VS installé, et cela n'est absolument pas supporté.

Tant que la personne qui lance la construction possède une licence, vous n'en avez pas besoin pour le serveur de génération. Cela a été le cas depuis les jours sombres de 2005, et tant qu’il ya une parité d’édition, tout va bien.

Si tous les membres de votre équipe ont Ultimate, vous êtes libre de l’installer sur le serveur de compilation; mais si l'un des membres de votre équipe dispose de Premium, vous devriez idéalement installer Premium sur le serveur de compilation. Cela active également beaucoup d'autres éléments tels que la couverture de code, l'analyse d'impact de test et la validation d'architecture, entre autres.

Voici les étapes que j'ai suivies pour que mon serveur de génération exécute MsTest sans installer VS 2012:

  1. Création du dossier de répertoire 'Mstest' dans c:\dev.
  2. Copié "Mstest.exe" et "Mstest.exe.config" de C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE dans le répertoire "Mstest"
  3. Copiez Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll dans le répertoire 'Mstest'
  4. Répertoire 'assemblies' créé dans le dossier 'Mstest'
  5. Extraction de toutes les v11 Microsoft.VisualStudio.QualityTools. *. Dll de C:\Windows\Assembly dans le répertoire 'Mstest/assemblies'
  6. Copiez tous les Microsoft.VisualStudio.QualityTools. .dlls et Microsoft.VisualStudio.TestTools 'v11'. .dll de C:\Windows\Microsoft.NET\Assembly\GAC_MSIL vers 'Mstest/assemblies'
  7. Copiez tous les Microsoft.VisualStudio.QualityTools. .dlls et Microsoft.VisualStudio.TestTools v11. .dll à partir de C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies vers 'Mstest/assemblies'
  8. Ajouter 'assemblies' à l'attribut 'privatePath' de dans 'Mstest.exe.config' 
  9. Exportez 'HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/VisualStudio/11.0/Enterprise/QualityTools et appliquez-le à la boîte de dialogue Hudson.
  10. Copiez QTAgent32.exe et QTAgent32.exe.config dans le répertoire 'MsTest' à partir de C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
  11. Ajoutez 'assemblies' à l'attribut 'privatePath' de 'QTAgent32.exe.config' 
  12. Copiez 'msdia110.dll' de 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger' dans 'MsTest/assemblies'.
  13. Enregistrez 'msdia110.dll' avec c: /windows/syswow64/regsvr32.exe/i '../mstest/assemblies/msdia110.dll'(Cela a jeté une erreur, mais pour une raison quelconque, il fonctionnait toujours. fois et essayé différentes versions de regsvr32.exe avant que je vérifie, mais il est dans le registre)

  14. Ajoutez la variable d’environnement 'MSTEST_HOME' et définissez-la sur 'c:\dev\mstest \' ou sur votre chemin. J'ai utilisé la variable d'environnement dans mon script de construction.

Débogage de l'erreur d'exécution de MsTest:

Ajouter à '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>
1
Dai Le

Je viens de travailler sur mes serveurs sans installer l'IDE de Visual Studio 2017. Mon exigence était 

  • Construire des projets
  • Construire des projets de test
  • Exécutez des tests en utilisant VSTest (je crois que c'est un processus similaire pour MSTest)

Je devais faire une combinaison de quelques choses énoncées dans d’autres réponses, puis aussi une autre ici .

VS2017:

  1. BuildTools - Vous pouvez le trouver sur la page Téléchargements Microsoft , puis faites défiler jusqu'à "Outils pour Visual Studio 2017" -> "Construire des outils pour Visual Studio 2017".
  2. TestAgent - Vous pouvez le trouver sur la page Téléchargements Microsoft , puis faites défiler jusqu'à "Outils pour Visual Studio 2017" -> "Agents pour Visual Studio 2017".
  3. Nuget Package pour inclure la DLL de test unitaire Visual Studio - Vous pouvez la trouver ici

L'étape 3 consistait à résoudre le problème suivant: 

"Impossible de résoudre cette référence. Impossible de localiser l'assembly" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Ce qui a ensuite causé: 

"erreur CS0234: le type ou le nom de l'espace de noms 'VisualStudio' n'existe pas dans l'espace de noms 'Microsoft' (il manque une référence d'assembly?)"

Je n'ai pas eu à ajouter de références au projet. Toutefois, le chemin d'accès à vstest.console.exe est contenu dans le dossier TestAgent (il m'appartenait "C:\Fichiers de programme (x86)\Microsoft Visual Studio\2017\Test\Agent\Common7\IDE\CommonExtensions\Microsoft\TestWindow" )

0
Andy

MSTest était annoncé pour .NET Core users. L'annonce contient un exemple d'utilisation avec l'outil dotnet. Je ne me suis pas imaginé comment obtenir le fichier exécutable autonome mstest.

0
user7610

Si vous devez exécuter l'outil de test Web mstest.exe, vous pouvez installer la version d'essai de Visual Studio Enterprise et assurez-vous de l'exécuter au moins une fois (démarrez-le simplement) sous le compte sous lequel le test sera exécuté sans qu'il soit nécessaire d'effectuer d'autres tâches. Donc, si votre test s'exécute sous un compte système, vous devez utiliser un des éléments suivants:

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