J'essaye de configurer le plugin de compilation de MSTest sur Jenkins, mais j'obtiens l'erreur suivante:
Path To MSTest.exe: mstest.exe
Result file was not found so no action has been taken. file:/C:/Program%20Files%20(x86)/Jenkins/jobs/SoftwrenchvNext/workspace/TestResult.trx
FATAL: null
Java.lang.NullPointerException
at org.jenkinsci.plugins.MsTestBuilder.perform(MsTestBuilder.Java:144)
La configuration spécifie simplement TestResult.trx en tant que ResultFileName. Ce fichier n'est pas versionné et je m'attends à ce qu'il soit créé à chaque génération.
Que faut-il faire pour cela?
Moi aussi j'avais exactement le même message d'erreur!
Ma recommandation est de remplacer l'étape "Exécuter les tests unitaires avec MSTest". avec une étape "Exécuter la commande batch de Windows". Cela a fonctionné pour moi.
Commande
del TestResults.trx
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx
En utilisant cette technique, vous pouvez toujours utiliser l'étape "Publier le rapport du résultat du test MSTest" en spécifiant ...
Fichier de rapport de test TRX
TestResults.trx
Bonne chance!
En outre, vous pouvez "simuler" la fonctionnalité "Continuer les tests ayant échoué" avec un appel "EXIT", comme indiqué ci-dessous.
del TestResults.trx
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx /nologo
EXIT /B 0
Après une enquête, j'ai pu obtenir que MSTest travaille à Jenkins en procédant comme suit:
Sélectionnez Manage Jenkins
Dans le menu Manage Jenkins, sélectionnez Configure System.
Dans Configure System, vous devez rechercher MSTest et ajouter votre configuration MSTest.
Entrez votre configuration comme bon vous semble. Le mien apparaît comme suit:
Enregistrez la configuration, puis accédez à votre projet de construction et configurez les éléments appropriés, comme indiqué ci-dessous:
Une chose à noter est que je n'ai suivi aucune des étapes énumérées sur le site de l'auteur car elles semblaient n'avoir aucun sens pour moi. J'ai cependant lu le code et passé du temps à creuser et me suis rendu compte que la pièce manquante se trouvait dans la page de configuration du système de Jenkins.
À votre santé!
Une autre chose à noter: Cela ne fonctionne pas avec .NetCore, mais avec le .Net Framework normal: (Voir https://github.com/Microsoft/vstest/issues/1213#issuecomment-338561792 et https : //developercommunity.visualstudio.com/content/problem/238572/mstest-command-line-reports-no-tests-to-run.html )
J'ai utilisé un travail par lots à Jenkins avec quelque chose comme le code suivant:
dotnet test src\Folder\Project.csproj --logger:trx
Veuillez trouver la référence complète pour dotnet test
ici: https://docs.Microsoft.com/de-de/dotnet/core/tools/dotnet-test?tabs=netcore21
En fin de compte, j’ai abandonné la configuration du MSTest via les panneaux faciles - il ne trouverait pas la dll de test, donc, comme le gars ci-dessus, j’ai utilisé la commande batch. J'ai ajouté ma commande batch ci-dessous car elle résout certains problèmes liés aux réponses précédentes, car elles ne prennent pas en compte le fait que vous devez supprimer le fichier .trx avant chaque exécution ou lui attribuer un nom unique, sinon les tests échoueront.
Voici ma solution fonctionnant sous Jenkins en tant que commande batch:
"C:Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/MSTest.exe" /resultsfile:"%WORKSPACE%/MyAppTest_%BUILD_NUMBER%.trx" /testcontainer:"%WORKSPACE%/Components/ebox2/Central/MyApp/MyAppWeb/trunk/MyAppTest/bin/Release/MyAppTest.dll" /nologo /category:Build
Notez l'inclusion de% BUILD_NUMBER% dans le nom du fichier .trx, ce qui résout le problème de l'échec des travaux en raison d'un fichier .trx en double.
Notez également que/category: Build vous permet de choisir les tests que vous souhaitez. Vous définissez la catégorie dans les tests eux-mêmes:
[TestCategory("Build"), TestMethod()]
J'utilise ceci parce que j'ai des tests au sélénium que je n'ai pas encore compris comment fonctionner dans Jenkins, ou si c'est possible.