2017-07-24 2 views
0

J'ai actuellement une génération qui est automatisé à l'aide Jenkins. Le travail build/deploy de Jenkins génère un fichier EAR Java à l'aide de maven, puis déploie le fichier EAR intégré sur un serveur.Exécution des tests de Spock Dans le cadre de Jenkins Construire

Je veux intégrer dans ce test Spock build/flux de déploiement. Une fois le fichier EAR créé, je souhaite exécuter les tests Spock sur le code EAR. Si tous les tests réussissent, je veux continuer le déploiement de l'EAR. Si un ou plusieurs tests échouent, je souhaite que le travail de génération/déploiement Jenkins échoue et renvoie une erreur.

Je voudrais également afficher un résumé des résultats de test, qu'ils soient réussis ou échoués.

Quels changements dois-je apporter au travail de build/deploy de Jenkins, le projet maven qui construit réellement les tests EAR et/ou Spock pour accomplir ceci?

+2

[Exécution de tests unitaires Spock avec maven] (https://stackoverflow.com/questions/25186004/running-spock-unit-tests-with-maven?rq=1) –

Répondre

2

Vous pouvez voir un Spock comme une extension JUnit. Et en tant que tel, tous les outils qui vous aident à exécuter les tests propulsés JUnit sont également applicables à spock.

Par exemple,

  • Si vous êtes dans Maven, vous pouvez utiliser maven-plugin-Surefire ou maven-plugin-failsafe pour exécuter les tests axés sur spock.
  • Si vous voulez voir les résultats dans Jenkins, il est possible d'utiliser l'action et post Créer montrer « Publier le rapport de résultat de test JUnit »

Maintenant, une partie de confusion est de l'AER. Tests (unité et intégration) sont généralement exécutés avant votre build est prêt. Une fois que le fichier EAR est prêt, vous souhaitez probablement exécuter des tests système (flux de fin de série) ou autre. Cela signifie que spock/junit/tout autre framework devra contacter EAR depuis l'extérieur, ce qui signifie que vous devrez démarrer le serveur d'applications et que ces tests seront comme des clients distants.

C'est possible mais la configuration sera beaucoup plus compliquée (toutes les bases de données, le serveur d'application lui-même et ainsi de suite) mais c'est un peu au-delà de la portée de cette question.