2016-11-24 4 views
1

Ich möchte einen Test erneut ausführen, von dem ich weiß, dass er fehlschlägt, weil ich versuche, den Surefire-Parameter zu testen, um die fehlgeschlagenen Tests erneut auszuführen. Ich habe versucht Maven laufen mit diesen beiden Befehlen arbeitet keiner von ihnen wie erwartetSurefire-Wiederholung fehlgeschlagene Tests funktionieren nicht

-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails test 

und

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

Hier ist ein Teil 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> 

Ich hatte erwartet, dass Surefire würde den Test nach einem Fehler neu starten, aber Maven ju st löst diesen Fehler aus, den ich zu lösen weiß, aber ich möchte, dass der Test erneut ausgeführt wird.

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. 

Antwort

1

Obwohl das aus der Dokumentation fehlt, wird der Parameter rerunFailingTestsCount wurde in der Version 2.18 der Maven todsicheren Plugin eingeführt, wie in SUREFIRE-1087 erwähnt. Da Sie die Standardversion von 2.12.4 (die vom Super POM stammt) verwenden, ist diese Option nicht verfügbar.

Daher ist das Update einfach die Surefire-Version auf eine Version zu aktualisieren, die mindestens 2,18 ist; zum Beispiel die neueste, die derzeit 2.19.1 ist:

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

Beachten Sie, dass dieser Parameter nur mit JUnit arbeitet 4+ (was der Fall ist, da Sie 4.12 JUnit haben).

+0

oooooh jetzt sehe ich! Ich dachte, dass das Hinzufügen als Abhängigkeit die Arbeit erledigen wird, aber es muss als Plugin hinzugefügt werden. Ich wollte gerade fragen, ob Sie nicht bemerkt haben, dass es bereits in pom.xml definiert ist, haha. Vielen Dank! –

1

Statt die Befehlszeile Eigenschaft mit -Dsurefire.rerunFailingTestsCount = 2, können Sie es auch im pom im Abschnitt Eigenschaften definieren

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

Gerade Wim Rutgeerts Antwort hinzufügen - rerunFailingTestsCount in der sein muss, configuration Abschnitt, nicht in properties, wie folgt aus:

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

in meinem Fall mit maven-surefire-plugin 2.19.1 arbeitete es auf diese Weise. Als es in properties war, hat es nicht funktioniert.

Verwandte Themen