2016-11-24 2 views
1

Je souhaite réexécuter un test dont je sais qu'il va échouer car j'essaie de tester le paramètre Surefire pour réexécuter les tests défaillants. J'ai essayé de courir Maven avec ces deux commandes aucun d'entre eux fonctionne comme prévuSurefire relancer les tests échouant ne fonctionne pas

-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails test 

et

-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails surefire:test 

Voici une partie de pom.xml

<dependency> 
    <groupId>org.apache.maven.surefire</groupId> 
    <artifactId>surefire-api</artifactId> 
    <version>2.19.1</version> 
</dependency> 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.53.1</version> 
</dependency> 

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.12</version> 
    <scope>test</scope> 

je m'y attendais Surefire recommencerait le test après échec, mais Maven ju st jette cette erreur, que je sais comment résoudre mais je veux que le test soit réexécuté.

Results : 

Tests in error: 
    testA(selenium.services.TestThatWillFail): Element is not currently visible and so may not be interacted with(..) 

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

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 55.060 s 
[INFO] Finished at: 2016-11-24T12:58:02+01:00 
[INFO] Final Memory: 18M/173M 

[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project eskn_selenium: There are test failures. 

Répondre

1

Bien que manque de la documentation, le paramètre rerunFailingTestsCount a été introduit dans la version 2.18 du plugin Maven Surefire, comme mentionné dans SUREFIRE-1087. Puisque vous utilisez la version par défaut de 2.12.4 (qui vient du Super POM), cette option n'est pas disponible. Par conséquent, le correctif consiste simplement à mettre à jour la version Surefire vers une version au moins 2.18; par exemple, la dernière, qui est actuellement 2.19.1:

<pluginManagement> 
    <plugins> 
    <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
    </plugin> 
    </plugins> 
</pluginManagement> 

Notez que ce paramètre fonctionne uniquement avec JUnit 4+ (ce qui est votre cas, puisque vous avez JUnit 4,12).

+0

oooooh maintenant je vois! Je pensais que l'ajouter en tant que dépendance fera le travail mais il doit être ajouté en tant que plugin. J'étais sur le point de demander si vous n'avez pas remarqué qu'il est déjà défini dans pom.xml haha. Merci! –

1

Au lieu d'utiliser la propriété de ligne de commande -Dsurefire.rerunFailingTestsCount = 2, vous pouvez également définir dans la pom dans la section Propriétés

<properties> 
    <surefire.rerunFailingTestsCount>2</surefire.rerunFailingTestsCount> 
</properties> 
0

Juste pour ajouter à la réponse de Wim Rutgeerts - rerunFailingTestsCount doit être dans le section configuration, pas properties, comme ceci:

<configuration> 
    <rerunFailingTestsCount>2</rerunFailingTestsCount> 
</configuration> 

dans mon cas avec maven-surefire-plugin 2.19.1 cela a fonctionné de cette façon. Quand c'était dans properties cela ne fonctionnait pas.