Ich habe ein Java-Gurken-Maven-Projekt erstellt. Jetzt möchte ich einen Listener hinzufügen oder einen beliebigen Weg, so dass meine Screenshot-Capture-Funktion aufgerufen wird, wenn einer von Gurkenschritt/Test fehlschlägt.So rufen Sie eine Funktion nach dem Ausfall von Selen, Junit, Gurke und Maven-Projekt
Ich verwende nicht @RunWith(Cucumber.class)
in Junit TestRunner-Klasse. Ich habe @RunWith(ExtendedCucumberRunner.class)
integriert
1. Versuch: Hier habe ich versucht, unten Funktion in ExtendedCucumberRunner Klasse außer Kraft zu setzen: -
import org.junit.runner.notification.Failure;
public void testFailure(Failure failure){
}
Aber wenn ich einen Fehler außer Kraft zu setzen versuche wird erscheinen, wie:
Die Methode testFailure (Failure) vom Typ ExtendedCucumberRunner muss überschreiben oder eine Supertype-Methode implementieren.
2. Versuch:
Ich habe auch versucht RunListener
Klasse zu erweitern nach wie vor ist es nicht funktioniert.
Der Code I Lister hinzufügen Ich versuche wie unten:
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import automationframework.AutomationLog;
import automationframework.ScreenshotAndTestNgReporterListener;
public class JUnitExecutionListener extends RunListener{
/**
* Called when an atomic test fails.
* https://howtodoinjava.com/junit/how-to-add-listner-in-junit-testcases/
* */
@Override
public void testFailure(Failure failure) throws java.lang.Exception{
super.testFailure(failure);
if (!failure.getDescription().isSuite()) {
ScreenshotAndTestNgReporterListener.customScreenshot();
AutomationLog.error("In Custom Failer Class of Junit");
System.out.println("FAILED!!!!!"); //Here pass your screenshot capture event
}
ScreenshotAndTestNgReporterListener.customScreenshot();
AutomationLog.error("In Custom Failer Class of Junit");
System.out.println("FAILED!!!!!"); //Here pass your screenshot capture event
}
}
3. Versuch:
Ich habe auch
unten Regel in Testrunner Klasse hinzuzufügen versucht@Rule
public TestWatcher watchman= new TestWatcher() {
private String watchedLog;
@Override
protected void failed(Throwable e, Description description) {
ScreenshotAndTestNgReporterListener.customScreenshot();
AutomationLog.error(e.getMessage());
watchedLog+= description + "\n";
}
@Override
protected void succeeded(Description description) {
watchedLog+= description + " " + "success!\n";
}
};
ich tun nicht @After Methode hinzufügen möchten, wie es jedes Mal aufrufen wird, auch wenn Testcase Erfolg.
Ich möchte nur Screenshot erfassen, wenn Testfall
versagt mir jemand sagen kann um jede mögliche Weise, so kann ich gleiche ?. erreichen
Sie können es nach Haken in das tun, indem Sie das Szenario-Objekt als Methode Parameter übergeben . Das aktuelle ausführende Szenario wird von Gurke injiziert. Die Methode isFailed() von Scenario gibt true zurück, wenn der Test fehlgeschlagen ist. Fügen Sie den Screenshot hinzu, nachdem Sie diese Bedingung überprüft haben. – Grasshopper
können Sie bitte ein Beispiel teilen –
https://stackoverflow.com/questions/44919810/hook-up-in-cucumber-check-for-scenario-failure-in-java/44921078#44921078. – Grasshopper