2017-11-27 7 views
0

Ist es möglich, einen Läufer beim Starten von Tests aus der Kommandozeile von Gurke zu definieren/anzugeben (cucumber.api.cli.Main)? Mein Grund dafür ist, dass ich XML-Berichte in Jenkins generieren und die Ergebnisse an ALM Octane weitergeben kann.Wählen Sie einen anderen Läufer für gurke.api.cli.Main?

ich geerbt Art dieses Projekt und seine Verwendung gradle ein javaexect zu tun und rufen cucumber.api.cli.Main ich seine mögliche weiß, dass dies mit @RunWith(OctaneCucumber.class) zu tun, wenn JUnit runner + Maven (oder nur JUnit runner) verwenden, ansonsten dem Tag ignoriert. Ich habe den benutzerdefinierten Läufer mit diesem Tag, aber wenn ich von cucumber.api.cli.Main laufen, kann ich einen Weg nicht finden, mit ihm zu laufen, und mein Umbau wird gerade ignoriert.

+1

gurke.api.cli.Main verwendet keinen Runner, wenn er über die Befehlszeile aufgerufen wird. Sie können den benutzerdefinierten Code als Plugin hinzufügen, indem Sie die Option -p verwenden. Siehe diesen Artikel - https://automationrhapsody.com/create-cucumber-jvm-custom-formatter/. – Grasshopper

Antwort

0

Was @Grasshopper vorgeschlagen hat funktioniert nicht genau, aber es hat mich in die richtige Richtung geschaut.

Statt den Code als Plugin hinzuzufügen, ich es geschafft, „Hack/load“ der Oktan Reporter durch eine Kopie des cucumber.api.cli.Main erstellen, es als Basis mit Hilfe der CLI-Befehle auszuführen und ein wenig die run Methode ändern und füge das Plugin zur Laufzeit hinzu. Dies ist notwendig, da das Plugin einige Parameter in seinem Konstruktor benötigt. Könnte nicht die perfekte Lösung sein, aber es erlaubte mir, den gradle Build-Prozess zu behalten, den ich ursprünglich hatte.

public static byte run(String[] argv, ClassLoader classLoader) throws IOException { 
    RuntimeOptions runtimeOptions = new RuntimeOptions(new ArrayList<String>(asList(argv))); 

    ResourceLoader resourceLoader = new MultiLoader(classLoader); 
    ClassFinder classFinder = new ResourceLoaderClassFinder(resourceLoader, classLoader); 
    Runtime runtime = new Runtime(resourceLoader, classFinder, classLoader, runtimeOptions); 

    //====================Added the following lines ================ 
    //Hardcoded runner(?) class. If its changed, it will need to be changed here also 
    OutputFile outputFile = new OutputFile(Main.class); 
    runtimeOptions.addPlugin(new HPEAlmOctaneGherkinFormatter(resourceLoader, runtimeOptions.getFeaturePaths(), outputFile)); 
    //============================================================== 

    runtime.run(); 

    return runtime.exitStatus(); 
} 
Verwandte Themen