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 installer MSTest sans Visual Studio?

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

Visual Studio 2017 (127 Mo d’espace disque, inférieur à celui du téléchargement)
Visual Studio 2015 (configuration de 128 Mo, 2 Go d’espace disque requirejs)
Visual Studio 2012 (224 Mo)
Visual Studio 2013 (287 Mo)
Visual Studio 2010 (515 Mo)

Cela installe tout le nécessaire pour exécuter mstest.exe à partir de la ligne de commande et est beaucoup plus léger que Visual Studio. ~ 500 Mo de téléchargement et environ 300 Mo pour 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/

Cette réponse concerne spécifiquement Visual Studio 2017 et la réponse est oui . Sachez cependant que Microsoft (toujours) ne fournit aucune sorte d’API officielle pour localiser les exécutables pertinents ( MSBuild.exe et MSTest.exe ). Vous êtes donc bloqué à lire les clés de registre et / ou à explorer divers répertoires pour localiser ces fichiers . Tu as été prévenu.

  • Si vous avez seulement besoin de construire votre projet de test unitaire, installez le package MSTest.TestFramework dans ces projets et supprimez la référence à Microsoft.VisualStudio.QualityTools.UnitTestFramework . Il ne vous rest plus qu’à installer les outils de msbuild.exe Visual Studio 2017 et à appeler msbuild.exe pour effectuer la génération.
  • Si vous devez également exécuter vos tests, les choses deviennent plus délicates:
    • La solution la plus simple consiste à installer VS2017 Community Edition (qui inclut à la fois msbuild et mstest) – mais je ne suis pas certain de la légalité de cela et je ne suis pas avocat, alors soyez prudent!
    • Une solution juridiquement plus sûre (et beaucoup plus légère en termes d’espace disque) consiste à installer l’ agent de test Visual Studio 2017 , puis à créer des outils pour Visual Studio 2017 (l’ ordre exact est essentiel 1 ); Cela vous donnera MSTest.exe et vstest.console.exe que vous pourrez alors appeler. Notez qu’il est difficile de déterminer où résident ces exécutables, car ils n’existent pas dans la même structure de répertoires que MSBuild.exe dans Build Tools.

Enfin, et ce qui est très important: si vous utilisez MSTest.TestFramework et que vous devez toujours être capable de découvrir et d’exécuter des tests depuis l’IDE de Visual Studio, vous aurez également besoin de MSTest.TestAdapter installé dans votre projet 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 l’installation la plus récente. Par conséquent, si vous installez Test Agent en dernier, la clé pointera sur son répertoire d’installation … mais Test Agent n’inclut pas MSBuild.exe , donc tout code qui s’appuie sur cette clé de registre pour déterminer le chemin de cet exécutable échouera. Pourquoi Microsoft n’a-t-il pas pu faire de l’agent de test un composant facultatif de Build Tools (pour que tous les fichiers EXE fonctionnent dans la même hiérarchie de répertoires)?

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 Visual Studio.

@ crocpulsar, vous devez installer Visual Studio sur votre serveur de build, mais vous n’avez pas besoin d’acheter une licence supplémentaire .

Il y a tout simplement trop de dépendances pour que build & MSTest fonctionne sans VS, et ce n’est certainement pas supporté.

Tant que la personne qui lance la génération 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 y a une parité d’édition, vous êtes d’accord.

Si tout le monde dans votre équipe a Ultimate, vous êtes libre de l’installer sur le serveur de génération; mais si l’un des membres de votre équipe dispose de Premium, vous devriez idéalement installer Premium sur le serveur de génération. Cela permet également d’utiliser de nombreux autres éléments, tels que la couverture de code, l’parsing d’impact de test et la validation d’architecture.

Voici les étapes à suivre pour que mon serveur de build 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 vers le répertoire ‘Mstest’
  3. Copiez Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll dans le répertoire ‘Mstest’
  4. Création du répertoire ‘assemblys’ dans le dossier ‘Mstest’
  5. Extrait tous les v11 Microsoft.VisualStudio.QualityTools. *. Dlls de C: \ Windows \ assembly vers le répertoire ‘Mstest / assemblies’
  6. Copiez tous les “v11” Microsoft.VisualStudio.QualityTools. .dlls et Microsoft.VisualStudio.TestTools. .dlls de C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL vers ‘Mstest / assemblies’
  7. Copiez tous les Microsoft.VisualStudio.QualityTools v11. .dlls et Microsoft.VisualStudio.TestTools. .dll de C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies à ‘Mstest / assemblies’
  8. Ajouter ‘assemblies’ à l’atsortingbut ‘privatePath’ de ‘Mstest.exe.config’
  9. Exportez ‘HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Entreprise / QualityTools et appliquez-le à hudson box.
  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. Ajouter ‘assemblies’ à l’atsortingbut ‘privatePath’ de ‘QTAgent32.exe.config’
  12. Copiez ‘msdia110.dll’ depuis ‘C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger’ vers ‘MsTest / assemblies’
  13. Enregistrez ‘msdia110.dll’ avec c: /windows/syswow64/regsvr32.exe / i ‘../mstest/assemblies/msdia110.dll’ (Cela a provoqué une erreur, mais pour une raison quelconque, cela a encore fonctionné. fois et essayé différentes versions de regsvr32.exe avant que je vérifie, mais il est là 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 compilation.

Erreur d’exécution du débogage MsTest:

Ajouter à “MsTest.exe.config”

           

MSTest a été annoncé pour les utilisateurs de .NET Core . L’annonce a un exemple d’utilisation avec l’outil dotnet . Je n’ai pas compris comment obtenir l’exécutable autonome mstest .

Si vous devez utiliser l’outil webstest mstest.exe, vous pouvez installer la version d’évaluation de Visual Studio Enterprise et assurez-vous de l’exécuter au moins une fois (lancez-le simplement) sous un compte sous lequel aucun test ne doit être effectué. Donc, si votre test est exécuté sous un compte système, vous devez utiliser quelque chose comme ci-dessous

 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" 

Je viens de recevoir ce travail sur mes serveurs sans installer l’IDE de Visual Studio 2017. Mon exigence était

  • Construire des projets
  • Construire des projets de test
  • Exécuter des tests avec VSTest (je crois que c’est un processus similaire pour MSTest)

J’ai dû faire une combinaison de quelques éléments énoncés dans d’autres réponses, puis une autre ici .

VS2017:

  1. BuildTools – Cela peut être trouvé sur la page de téléchargement Microsoft , puis faites défiler jusqu’à “Outils pour Visual Studio 2017” -> “Outils de création pour Visual Studio 2017”
  2. TestAgent – Cela peut être trouvé sur la page de téléchargement Microsoft , puis faites défiler jusqu’à “Outils pour Visual Studio 2017” -> “Agents pour Visual Studio 2017”
  3. Nuget Package pour inclure le test visuel de l’unité de studio – Ceci peut être trouvé 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 nom de type ou d’espace de noms ‘VisualStudio’ n’existe pas dans l’espace de noms ‘Microsoft’ (manque-t-il une référence d’assembly?)”

Je n’ai pas eu à append de références au projet. Toutefois, le chemin d’access au fichier vstest.console.exe est contenu dans le dossier TestAgent (pour moi, il s’agissait de “C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow” )