laufen Ich habe zwei @after-Tags, @ close-Browser und @ screenshot.So, gerade jetzt, wenn ich beide Tags für Feature verwenden Datei es führt zunächst @ close-browser aus und es schlägt bei der Ausführung nach Methode für @ screenshot fehl. Gibt es einen Weg, dass ich Gurke sagen kann, @screenshot nach Methode zuerst zu laufen?Gurke-JUnit, gibt es eine Möglichkeit, die Reihenfolge zu steuern, in der @before und @after Tags
Antwort
Der Screenshot sollte in einer der annotierten Methoden @After
aufgenommen werden. Wie folgt aus:
@After
public void finish(Scenario scenario) {
try {
byte[] screenshot =
helper.getWebDriver().getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
} catch (WebDriverException somePlatformsDontSupportScreenshots) {
System.err.println(somePlatformsDontSupportScreenshots.getMessage());
}
finally {
helper.getWebDriver().close();
}
}
Es gibt ein ‚Ordnung‘ Argument, das Sie @Before
und @After
passieren können, um die Reihenfolge der Ausführung zu steuern:
@Before(order = 5)
public void foo() {}
@After(order = 500)
public void bar() {}
Vor Haken sind in aufsteigender Reihenfolge (niedrigste Auftragsnummer zuerst ausgeführt), während After-Hooks in absteigender Reihenfolge ausgeführt werden (höchste Bestellnummer zuerst).
Ich überprüfe, ob isscanrio fehlgeschlagen ist, und wenn es fehlschlägt, führe ich Code aus? Wenn ich zwei Feature-Dateien ausführe, ist das letzte Szenario fehlgeschlagen, und der erste Schritt der nächsten Funktion wird ebenfalls fehlschlagen, weil Gurken vorheriges Szenario fehlgeschlagen ist. Weißt du, wie man mit dieser Art von Situation umgeht? Ihre Hilfe wird sehr geschätzt. – Samantha
@tosha: Bitte starten Sie eine neue Stack Overflow Frage –
Ich habe überprüft, bitte – Samantha
Das Problem mit diesem Ansatz ist manchmal Ich möchte den Browser nicht schließen, Wenn das Szenario fehlschlägt, ist der Grund dafür, dass ich für einige meiner Funktionen den gleichen Browser für alle Szenarien verwende. Wenn ich diese after-Methode verwende, wird der Browser geschlossen und das nächste Szenario wird die Browser-Sitzung nicht finden und wird fehlschlagen. – Samantha
Ich weiß nicht, ob es korrekt ist, die gleiche Browsersitzung für alle Szenarien in einigen Feature-Dateien zu verwenden. – Samantha
@tosha es ist strongly beratend von den Cucumber Best Practices, dass alle Szenarien vollständig voneinander isoliert sind. Wenn du das sagst, kannst du die selbe Sitzung immer noch verwenden, solange du die Cookies in einer deiner annotierten Methoden '@ After' löschst –