Je cherche à exécuter des tests NUnit automatisés pour une application C #, tous les soirs et à chaque commit sur svn.
Est-ce quelque chose que Jenkins-CI peut faire?
Existe-t-il un didacticiel en ligne ou un document pratique qui documente une configuration similaire que je peux examiner?
c#
continuous-integration
hudson
jenkins
myrtilles
la source
la source
Réponses:
J'avais besoin de faire exactement ce que vous faites, voici comment j'ai configuré Jenkins pour le faire:
Test dll unique:
Test de plusieurs dll à l'aide de projets de test NUnit :
Une fois que votre projet a été construit, NUNit s'exécutera et les résultats seront visibles soit sur le tableau de bord (si vous survolez l'icône du rapport météo), soit sur la page du projet sous Dernier résultat du test .
Vous pouvez également exécuter la commande à partir de Visual Studio ou dans le cadre de votre processus de génération local.
Voici deux articles de blog que j'ai utilisés pour référence. Je n'en ai trouvé aucun qui correspondait exactement à mes besoins:
Guide en 1 heure de configuration de l'intégration continue: Jenkins rencontre .Net (2011)
Guide de création de projets .NET à l'aide de Hudson (2008)
la source
"C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console-x86.exe" UnitTests/UnitTests.nunit
. A parfaitement fonctionné pour moi.Si vous ne voulez pas coder en dur vos projets de test unitaire, il vaut mieux écrire un script pour récupérer toutes les DLL de votre projet de test unitaire. Nous le faisons avec Powershell et suivons une convention spécifique pour nommer nos projets de tests unitaires. Voici le contenu du fichier PowerShell qui exécute nos tests unitaires:
Le script est suffisamment robuste pour que nous le réutilisions pour tous nos travaux de construction. Si vous n'aimez pas le chemin complet de la console NUnit, vous pouvez toujours placer cet emplacement dans votre variable d'environnement PATH.
Ensuite, nous mettons le fichier RunUnitTests.ps1 sur notre serveur de build et utilisons cette commande batch:
la source
[string] $sourceDirectory = $(get-location)
et pour les chemins avec des espaces, j'ai dû changer le passe d'assemblage en nUnit en$cFiles = $cFiles + '"' + $file + '"' + " "
Pour Nunit 3 ou supérieur farmework:
Étape de construction (ligne de commande Windows)
"c:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" c:\AutomationTraining\CSharpSelenium\bin\Debug\test.dll --result=TestR.xml;format=nunit2
Étape de publication pour la publication de rapports Nunit, elle affiche uniquement le fichier de résultats de test dans le répertoire de l'espace de travail Jenkins, pas dans votre projet: TestR.xml
Nous devons faire des résultats de test au format nunit2 car maintenant le plugin Jenkins Nunit ne reconnaît pas le format de résultats Nunit3. Le format de la chaîne d'options est également différent:
--result=TestR.xml;format=nunit2
NON/xml=nunit-result.xml
la source
Cela fonctionne bien, je l'ai déjà configuré.
Configurez NUnit pour afficher les résultats dans un fichier XML et configurez le plug-in NUnit Jenkins pour consommer ce fichier XML. Les résultats seront disponibles sur le tableau de bord.
Maintenant, la façon dont vous invoquez NUnit dépend de vous. La façon dont nous l'avons fait était: le travail Jenkins exécute la cible NAnt exécute la suite de tests NUnit.
Vous pouvez configurer les tâches Jenkins pour qu'elles s'exécutent lors de la validation et / ou planifiées à une certaine heure.
la source
La solution de Ralph Willgoss fonctionne bien, mais j'ai changé 2 choses pour la rendre géniale:
a) J'ai utilisé un projet NUnit au lieu du fichier DLL directement. Cela facilite l'ajout d'autres assemblys ou la configuration du test dans l'interface graphique NUnit.
b) J'ai ajouté une ligne de plus au lot pour éviter que la construction échoue lorsqu'un test échoue:
Le plugin NUnit mentionné marque automatiquement la construction INSTABLE , ce qui est exactement ce que je veux, chaque fois qu'un test échoue. Il apparaît avec un point jaune.
la source
Je pense qu'il vaut mieux échouer la construction quand elle ne passe pas afin de ne pas la déployer. Faites quelque chose comme ceci:
Référence: http://www.greengingerwine.com/index.php/2013/01/tip-check-errorlevel-in-your-post-build-steps-when-using-nunit/
la source
Jenkins a des plugins qui prendront en charge cela. La configuration exacte dépendra un peu de la configuration de votre projet. Il existe des plugins spécifiques pour nUnit, MSBuild, nAnt etc. Commencez par regarder la page des plugins, mais cela ne devrait pas être très difficile à comprendre.
la source
Voici ma solution pour exécuter OpenCover avec vstest dans Jenkins:
Chaque dll de test est exécutée dans un processus propre car nous avons eu des problèmes pour exécuter toutes les dll de test en un seul processus (problèmes avec le chargement de l'assembly).
la source
Pour .Net Core, il suffit d'ajouter l'étape de construction "execute shell" avec le script suivant:
Après cela, ajoutez l'action post-build «Publier le rapport de résultat du test MSTest» pour rendre les résultats du test visibles.
Le chemin par défaut des rapports de test doit être
**/*.trx
et publiera tous les.trx
fichiers produits .la source