Running Cucumber testet direkt vom ausführbaren jar

8

Ich habe ein Projekt mit Gurke und Maven, ich benutze auch die JUnit.

Ich kann mein Projekt erfolgreich aus Eclipse ausführen und erstellen.

Nun möchte ich den Test von der Kommandozeile aus in einem anderen System ausführen, das (sollte) keine Eclipse oder Gurke installiert haben sollte. Ich habe eine Idee, dass wir eine JAR von jar erstellen können, können wir die Tests mit Java CLI-Befehlen ausführen.

Im Folgenden sind die Kombinationen aufgeführt, aus denen ich meine Tests ausführen möchte. Ich füge auch die Dateien pom.xml und RunCukesTest.java ein.

pom.xml

%Vor%

RunCukesTest.java

%Vor%
  • Ich habe JUNIT Jar im Klassenpfad hinzugefügt.

Ich erzeuge Gläser auf zwei Arten,

1) Exportieren von JAR mit - & gt; Projekt - & gt; Export - & gt; JAR-Datei  Auswahl der Hauptklasse im letzten Schritt als: RunCukesTest, da ich hier die Hauptmethode für den Einstiegspunkt definiert habe (benötigen wir diese Hauptmethode in dieser Klasse ???)

Nach dem Export laufe ich unter Befehl,

1,1 java -jar xyz.jar Ich bekomme einen Fehler: NoClassDef gefunden: org / junit / runner / JUnitCore

Also habe ich es so gemacht:

1.2 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore Es sagte,

%Vor%

Es hat immer noch nicht funktioniert, also habe ich den RunCukesTest-Datei-Namespace an den letzten,
angehängt 1.3 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore se.stepDefinations.RunCukesTest
 Es gab mir einen Fehler: Typ gurke.api.junit.Cucumber nicht vorhanden

2) Also gab ich die Option für den Export von Glas auf und ich versuche nun das JAR aus dem Maven Build zu verwenden. Ich wählte das POM aus, um mit Maven Build zu laufen, und es erzeugte 2 Gläser im Zielordner,

  

1 mit Namen xyz-0.0.1-SNAPSHOT mit 16kb anderen mit 2. mit
  xyz-0.0.1-SNAPSHOT-jar-mit-Abhängigkeiten mit 33mb

1) Ich habe die größere Datei mit Abhängigkeiten mit

ausgeführt %Vor%

Es gab mir eine Nachricht:

  

Kein Pfad zum Feature-Verzeichnis

2) Ich habe also versucht, den Namespace an die RunCukesTest-Datei anzuhängen,

%Vor%
  

Ich habe einen Fehler erhalten: keine Datei oder ein Verzeichnis gefunden

, wie natürlich der Fehler sagt, versucht es, eine Funktion innerhalb des Zielordners zu finden.

Auch hier möchte ich die JAR unabhängig von irgendwelchen Abhängigkeiten von Projektdateien auf einem anderen Computer wie einer ausführbaren Datei ausführen.

Jede Hilfe wäre willkommen. Danke.

    
Arpan Buch 22.03.2016, 08:59
quelle

2 Antworten

6

Ich teile das Problem, an das Sie denken, in zwei Teile.

  • Erstellen Sie ein ausführbares jar
  • Run Cucumber von Ihrer eigenen Hauptmethode

Das Erstellen eines ausführbaren Jars mit Maven kann auf verschiedene Arten erfolgen. Eine Möglichkeit, dies zu tun, ist hier beschrieben: Ссылка

Es ist ein kleines Beispiel, das sich nur darauf konzentriert, etwas von einer Befehlszeile wie folgt auszuführen:

java -jar ausführbares-beispiel.jar

Das Beispiel enthält alle Abhängigkeiten. Sie sind alle im selben Glas gebündelt. Keine Notwendigkeit für zusätzliche Gläser.

Der nächste Schritt wäre, Gurke von einer Hauptmethode auszuführen. Mein Ansatz wäre, einen main zu schreiben, der die Cucumber-Hauptmethode ausführt, die für die Befehlszeilenversion von Cucumber verwendet wird. Die Hauptmethode, die zum Ausführen von Gurke über eine Befehlszeile verwendet wird, befindet sich in der cucumber-java -Bibliothek. Sie finden es unter cucumber.api.cli.Main

Das Ausführen einer Hauptmethode aus einer anderen Hauptmethode geschieht folgendermaßen:

%Vor%

Argumente sind die Befehlszeilenargumente, mit denen Sie Gurke immer ausführen möchten.

Wenn Sie diese beiden Schritte ausführen, sollten Sie in der Lage sein, Gurke aus Ihrem eigenen ausführbaren Jar auszuführen, wo immer Sie einen Jar überhaupt ausführen können.

Beachten Sie, dass Sie die Bibliotheksversion für Gurke in Ihrem Pom mischen. Ich würde die neueste Version aller Bibliotheken verwenden. Vergleichen Sie cucumber-java , cucumber-testng und cucumber-junit . Die neueste Gurkenversion ist 1.2.4. Ich würde es für alle verwenden.

Weitere Informationen zum Ausführen von Cucumber über eine Befehlszeile finden Sie hier: Ссылка

    
Thomas Sundberg 23.03.2016, 07:46
quelle
0
%Vor%     
Murphy Lan 11.11.2017 13:20
quelle