2013-02-25 3 views
2

J'ai une plate-forme Jenkins qui appelle maven pour faire des tests unitaires (avec plugin surefire) et des tests d'intégration (avec plugin failsafe). Quand il y a une erreur dans les tests d'intégration, Jenkins considère la construction comme réussie. Ce comportement est-il normal? Je préférerais qu'il considère la construction comme instable. Plus généralement, savez-vous comment Jenkins lit et interprète le résultat de la construction pour considérer une construction comme réussie ou instable? J'ai lu quelque part sur le net que les rapports de sécurité doivent être redirigés vers le chemin du rapport surefire. J'ai fait l'id mais le problème est toujours là.Tests Jenkins + sélénium avec plugin failsafe

pom.xml:

[...] 
    <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.10</version> 
     <configuration> 
     <disableXmlReport>false</disableXmlReport> 
     </configuration> 
     <executions> 
     <execution> 
      <id>default-test</id> 
      <phase>test</phase> 
      <configuration> 
      <includes> 
       <include>**/tests/**</include> 
      </includes> 
      <excludes> 
       <exclude>**/testsIntegration/**</exclude> 
      </excludes> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-failsafe-plugin</artifactId> 
     <version>2.7.2</version> 
     <configuration> 
     <disableXmlReport>false</disableXmlReport> 
     <reportsDirectory>${basedir}/target/surefire-reports</reportsDirectory> 
     <includes> 
      <include>com/acelys/conventionsJuridiques/*.java</include> 
      <!-- ... inclure les tests Selenium --> 
     </includes> 
     </configuration> 
     <executions> 
     <execution> 
      <id>integration-test</id> 
      <phase>integration-test</phase> 
      <goals> 
      <goal>integration-test</goal> 
      </goals> 
      <configuration> 
      <includes> 
       <include>**/testsIntegration/**</include> 
      </includes> 
      <excludes> 
       <exclude>**/tests/**</exclude> 
      </excludes> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
[...] 

sortie jenkins:

[...] 
mojoStarted org.apache.maven.plugins:maven-failsafe-plugin:2.7.2(integration-test) 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.7.2:integration-test (integration-test) @ BaseContrats --- 
[INFO] Failsafe report directory: C:\jenkins_home\workspace\Base Contrats EXT JS MAVEN\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running com.acelys.conventionsJuridiques.testsIntegration.connexion.TestConnexion 

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 23.971 sec <<< FAILURE! 

Results : 

Failed tests: 
    testHomePage(com.acelys.conventionsJuridiques.testsIntegration.connexion.TestConnexion) 

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 

[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! 
mojoSucceeded org.apache.maven.plugins:maven-failsafe-plugin:2.7.2(integration-test) 
mojoStarted org.apache.tomcat.maven:tomcat6-maven-plugin:2.1-SNAPSHOT(tomcat-shutdown) 
[INFO] 
[INFO] --- tomcat6-maven-plugin:2.1-SNAPSHOT:shutdown (tomcat-shutdown) @ BaseContrats --- 
25 févr. 2013 09:32:08 org.apache.coyote.http11.Http11Protocol destroy 
INFO: Stopping Coyote HTTP/1.1 on http-8080 
25 févr. 2013 09:32:08 org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
25 févr. 2013 09:32:08 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 

mojoSucceeded org.apache.tomcat.maven:tomcat6-maven-plugin:2.1-SNAPSHOT(tomcat-shutdown) 
projectSucceeded BaseContrats:BaseContrats:1.0-SNAPSHOT 
sessionEnded 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2:07.408s 
[INFO] Finished at: Mon Feb 25 09:32:08 CET 2013 
[INFO] Final Memory: 13M/51M 
[INFO] ------------------------------------------------------------------------ 
Projects to build: [MavenProject: BaseContrats:BaseContrats:1.0-SNAPSHOT @ C:\jenkins_home\workspace\Base Contrats EXT JS MAVEN\pom.xml] 
[JENKINS] Archiving C:\jenkins_home\workspace\Base Contrats EXT JS MAVEN\pom.xml to C:\jenkins_home\jobs\Base Contrats EXT JS MAVEN\modules\BaseContrats$BaseContrats\builds\2013-02-25_09-29-58\archive\BaseContrats\BaseContrats\1.0-SNAPSHOT\BaseContrats-1.0-SNAPSHOT.pom 
[JENKINS] Archiving C:\jenkins_home\workspace\Base Contrats EXT JS MAVEN\target\ConventionsJuridiques.war to C:\jenkins_home\jobs\Base Contrats EXT JS MAVEN\modules\BaseContrats$BaseContrats\builds\2013-02-25_09-29-58\archive\BaseContrats\BaseContrats\1.0-SNAPSHOT\BaseContrats-1.0-SNAPSHOT.war 
channel stopped 
Finished: SUCCESS 

Répondre

1

Vous pouvez voir que Maven a terminé avec succès. Jenkins aura aussi fini avec succès.

Pour marquer comme instable, vous devez effectuer une action de post-construction qui analysera vos résultats de test et marquera la construction comme étant en échec ou instable. Je vous suggère de rechercher plus de détails sur les actions Jenkins post build pour le traitement des résultats de test et la construction de marquage au besoin.

Espérons que cela aide.

0

Vous devez ajouter une étape dans votre build: "Publier le rapport Junit" Vous aurez un graphique montrant tous vos résultats de test, mais il établira également le bon résultat de construction si les tests échouent.

+0

Le choix "Publier le rapport Junit" n'existe pas dans ma liste Jenkins Post-Build. – Clem

0

Comme indiqué par https://stackoverflow.com/users/709863/stephane-piette: Ajouter une action de publication de publication 'Publier le rapport de résultat de test de performance'. Cette action est fournie par le plugin nommé 'Performance plugin'. Vous n'avez probablement pas installé ce plugin, c'est pourquoi il n'existe pas dans la liste.

2

Selon the documentation:

failsafe: vérifier vérifie que les tests d'intégration d'une application adoptée.

Vous devez ajouter le but à l'exécution maven-plugin-failsafe:

<goals> 
    <goal>integration-test</goal> 
    <goal>verify</goal> 
</goals> 

Cela permettra Jenkins d'interpréter les résultats des tests et marquer la construction instable.

0

Sous les actions de post-construction, le rapport de résultat de test Publier JUnit modifie le XML du rapport à rechercher.

L'hypothèse est la norme surefire et les répertoires de sortie plugin failsafe sont utilisés.

enter image description here

changements à

enter image description here

0

L'objectif de "l'intégration test" du plug-in failsafe ne marquent pas la construction en erreur lors de tests échouent.

Vous devez ajouter l'objectif "verify" à exécuter après "integration-test" dans l'exécution du plug-in. Cela va rechercher les erreurs ou les échecs et marquer la construction comme "erreur".Alors Jenkins verra que Maven n'a pas réussi.

Questions connexes