web-dev-qa-db-fra.com

Erreur d'exécution de l'opération sur Jenkins

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
21
sky-dev

Après une enquête, j'ai pu obtenir que MSTest travaille à Jenkins en procédant comme suit:

Sélectionnez Manage Jenkins

enter image description here

Dans le menu Manage Jenkins, sélectionnez Configure System.

enter image description here

Dans Configure System, vous devez rechercher MSTest et ajouter votre configuration MSTest.

enter image description here

Entrez votre configuration comme bon vous semble. Le mien apparaît comme suit:

enter image description here

Enregistrez la configuration, puis accédez à votre projet de construction et configurez les éléments appropriés, comme indiqué ci-dessous:

enter image description here

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é!

29
Terry Rice

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

0
FranzHuber23

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.

0
GrahamJ