Je souhaite utiliser mstest.exe pour exécuter mon test unitaire sur le serveur de build, mais je ne souhaite pas installer Visual Studio sur le serveur de build. Puis-je simplement installer MSTest sans Visual Studio?
Je souhaite utiliser mstest.exe pour exécuter mon test unitaire sur le serveur de build, mais je ne souhaite pas installer Visual Studio sur le serveur de build. Puis-je simplement installer MSTest sans Visual Studio?
Réponses:
Il est possible d'exécuter mstest.exe sans Visual Studio.
Téléchargez l'un des agents pour les ISO Visual Studio ci-dessous et installez l' agent de test sur le serveur:
Visual Studio 2017 (127 Mo d'espace disque, moins que celui du téléchargement)
Visual Studio 2015 (128 Mo d'installation, 2 Go d'espace disque requis)
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:
Cette réponse concerne spécifiquement Visual Studio 2017 et la réponse est oui . Sachez cependant que Microsoft ne fournit (toujours) aucune sorte d'API officielle pour localiser les exécutables pertinents ( MSBuild.exe
et MSTest.exe
), vous êtes donc bloqué en lisant les clés de registre et / ou en sondant divers répertoires pour localiser ces fichiers . Tu as été prévenu.
MSTest.TestFramework
dans ces projets et supprimez la référence à Microsoft.VisualStudio.QualityTools.UnitTestFramework
. Il vous suffit maintenant d'installer les outilsmsbuild.exe
de génération de Visual Studio 2017 et de les appeler pour effectuer la génération.MSTest.exe
et vstest.console.exe
que vous pourrez ensuite appeler. Notez que déterminer où ces exécutables résident est un problème, car ils n'existeront pas dans la même structure de répertoire que MSBuild.exe
dans Build Tools.Enfin, et c'est très important: si vous utilisez MSTest.TestFramework
et devez toujours être en mesure de découvrir et d'exécuter des tests à partir de l'IDE de Visual Studio, vous devrez également être 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 clé de registre unique qui n'enregistre que l'installation la plus récente. Par conséquent, si vous installez l'agent de test en dernier, la clé pointera vers son répertoire d'installation ... mais l'agent de test ne l'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'aurait-il pas pu faire de l'agent de test une partie facultative des outils de construction (de sorte que tous les EXE vivent dans la même hiérarchie de répertoires) est une hypothèse.
File extension specified '.webtest' is not a valid test extension.
pour moi.
vswhere
vaut mieux que rien, mais vous devez toujours faire une hypothèse sur l'emplacement de MSBuild par rapport au répertoire d'installation de VS ... si (quand?) Microsoft décide de déplacer l'un de ces exécutables, cette hypothèse n'est plus valide . Pourquoi Microsoft ne peut pas ou ne veut pas créer un moyen par programme pour obtenir le chemin vers MSBuild / MSTest / VSTest (par opposition au répertoire d'installation VS, dont personne ne se soucie vraiment) me dépasse.
No test is available in C:\Users\..\Desktop\MyExeName.exe...
. J'ai ouvert une question sur SO . Si vous avez la moindre idée, j'apprécierais votre aide.
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 installé.
@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 juste trop de dépendances pour faire fonctionner build & MSTest sans VS installé, et il n'est certainement pas pris en charge.
Tant que la personne qui démarre la build dispose d'une licence, vous n'en avez pas besoin pour le serveur de build. C'est le cas depuis les jours sombres de 2005, et tant qu'il y a parité d'édition, tout va bien.
Si tout le monde dans votre équipe possède Ultimate, vous êtes libre de l'installer sur le serveur de build; mais si l'un des membres de votre équipe a Premium, vous devriez idéalement installer Premium sur le serveur de build. Cela active également de nombreux autres bits tels que la couverture du code, l'analyse d'impact des tests et la validation d'architecture, entre autres.
Je viens de faire fonctionner cela sur mes serveurs sans installer l'IDE de Visual Studio 2017. Mon exigence était
J'ai dû faire une combinaison de quelques choses énoncées dans d'autres réponses, puis une autre ici .
VS2017:
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 alors causé:
"erreur CS0234: le type ou le nom d'espace de noms" VisualStudio "n'existe pas dans l'espace de noms" Microsoft "(vous manquez une référence d'assembly?)"
Je n'ai pas eu à ajouter de références au projet. Cependant, le chemin d'accès à vstest.console.exe est contenu dans le dossier TestAgent (pour moi, c'était "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )
Voici les étapes que j'ai suivies pour que mon serveur de build exécute MsTest sans installer VS 2012:
Enregistrez 'msdia110.dll' avec c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Cela a généré une erreur, mais pour une raison quelconque, cela fonctionnait toujours. Je l'ai exécuté quelques fois et essayé différentes versions de regsvr32.exe avant de vérifier, mais il est là dans le registre)
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.
Erreur d'exécution de débogage 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>
Si vous avez besoin d'exécuter l'outil de test Web mstest.exe, vous pouvez installer la version d'évaluation de Visual Studio Enterprise et vous assurer de l'exécuter au moins une fois (il suffit de le démarrer) sous le compte sous lequel le test sera en cours d'exécution sans que rien supplémentaire ne soit nécessaire. Donc, si votre test est exécuté sous le 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"