2016-06-02 10 views
1

Ich verwende testng mit assertj Web zu testen fluentlenium und Umfang Berichte mit für Berichterstattung über die Ergebnissetestng assertj Bericht und weiter

ich vor der Frage ASKD aber vergessen, die Verwendung von assertj zu erwähnen.

Die angegebene Antwort war, Soft-Assert zu erweitern, und dass es onassertfauilre Funktion hat.

Gibt es so etwas für Assertj Soft Assertions? Oder andere Lösung, um es zu umgehen?

+0

Welche Assertj Softassert verwenden Sie? Es gibt viele verschiedene Endpunkte, die schwer zu erkennen sind. – Mobrockers

+0

Ich weiß, dass dort von dort Beispiel softsertion Klasse ist. Ich verstehe nicht ganz, was Sie sagen –

+0

Dies sind alle SoftAssertions Varianten assertj bietet: - [AutoCloseableBDDSoftAssertions] (https://github.com/joel-costigliola/assertj-core/blob/master/src/main /java/org/assertj/core/api/AutoCloseableBDDSoftAssertions.java) - [AutoCloseableSoftAssertions] (https://github.com/joel-costigliola/assertj-core/blob/master/src/main/java/org/assertj /core/api/AutoCloseableSoftAssertions.java) - [BDDSoftAssertions] (https://github.com/joel-costigliola/assertj-core/blob/master/src/main/java/org/assertj/core/api/BDDSoftAssertions .java) – Mobrockers

Antwort

0

In einer zukünftigen Version von assertJ wird eine Methode wasSuccess() hinzugefügt (wie auf git history zu sehen), aber es ist noch nicht in der aktuellen Version verfügbar.

Wenn diese Methode hinzugefügt wird man so etwas tun kann:

public class AssertjSoftAssert extends SoftAssertions { 

    private void checkFailure() { 

     if(!wasSuccess()) { 

      onFailure(); 
     } 
    } 

    private void onFailure() { 

     //doFailureStuff 
    } 

    @Override 
    public BigDecimalAssert assertThat(BigDecimal actual) { 

     BigDecimalAssert assertion = super.assertThat(actual); 
     checkFailure(); 
     return assertion; 
    } 

    @Override 
    public BooleanAssert assertThat(boolean actual) { 

     BooleanAssert assertion = super.assertThat(actual); 
     checkFailure(); 
     return assertion; 
    } 
} 

Anmerkung Sie jedoch, dass Sie JEDEN Behauptung Methode in der SoftAssertions Klasse außer Kraft setzen müssen, wie ich Ihnen gezeigt habe die Beispiele hier. Und auch wenn neue Assertions zur SoftAssertions-Klasse hinzugefügt werden, müssen Sie diese auch überschreiben. Dies ist die beste Lösung, die ich im Moment finden konnte, wird aber nicht funktionieren, bis assertj aktualisiert wird.

EDIT: Eigentlich sicher, ich bin nicht dies selbst, weil ich nicht sicher bin, funktionieren würde wasSuccess() nach jedem successvul softassert wahr zurückkehren wird oder erst nach assertAll() werfen, aber ich dies natürlich nicht testen kann, wie die Funktion nicht aus ist noch.

Bonus: The commit that added wasSuccess()

+1

'wasSuccess' gibt das Ergebnis der letzten (weichen) Behauptung zurück, so dass Sie entscheiden können, welche Behauptung ausgeführt werden soll Nächster. Siehe [Javadoc] (http://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/AbstractSoftAssertions.html#wasSuccess--) –

2

Im nächsten AssertJ Version (2.5.0) erhalten Sie Zugriff auf alle weichen Behauptungen Fehler haben (siehe diese commit).

Hoffe es hilft

+0

Dies könnte definitiv von verwendet werden OP für was er wollte.Ich denke jedoch, dass die Test-Lösung, Hooks für Fehler-/Erfolgsereignisse bereitzustellen, sehr nett ist. Glauben Sie, dass Sie in Ihrem Framework eine Verwendung dafür sehen? – Mobrockers

+0

AssertJ ist Community-getrieben, wenn ein Benutzer mit einem konkreten Anwendungsfall danach fragt, ja. –