Debuggen JBehave Szenarien
Frage
Ich habe Probleme beim Debuggen meiner JBehave Tests. Ich kann nicht Maven die JBehave Tests beginnen und an einem Haltepunkt zu stoppen. Ich habe dies in meinem pom:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<version>2.0.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<executions>
<execution>
<id>run-scenarios-found</id>
<phase>test</phase>
<configuration>
<scenarioIncludes>
<scenarioInclude>**/scenario/**/*${test}.java</scenarioInclude>
</scenarioIncludes>
<scenarioExcludes>
<scenarioExclude>**/*Steps.java</scenarioExclude>
</scenarioExcludes>
</configuration>
<goals>
<goal>run-scenarios</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
und ich habe versucht, Dinge wie:
$ mvn -e -o -Dtest=MyTest -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" clean test
und
$ export MVN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" ; mvn -Dtest=MyTest clean test
Ich kann versuchen, jsadebugd , aber ich, dass wahrscheinlich makellos Timing zu automatisieren, so dass klingt wie eine suboptimale Lösung, und ich fühle mich wie die JBehave Maven Plugin sollte diese Funktionalität bereitstellen benötigen. Offensichtlich habe ich einfach nicht die richtigen Stück-Dokumentation über noch nicht gefunden. Irgendwelche Ideen, wie ich mich über das?
Lösung
In der folgenden für mich gearbeitet: Export MAVEN_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspendieren = y, address = 8787 -Xnoagent -Djava.compiler = NONE"
dann meine mvn Tests starten: mvn install
(Maven hängt jetzt warten auf den Debugger zu verbinden)
Dann Eclipse-Start in einer Remote-Debug-Sitzung, auf dem lokalen Host zeigt, Port 8787 (wie oben), mit entsprechenden Haltepunkten setzen.
Andere Tipps
Wäre es nicht einfacher, die Tests nicht mit Maven zu beginnen, sondern in der IDE mit JUnit? Dann können Sie den Debugger direkt verwenden? Ich mache es normalerweise so, dass der CI-Server Maven verwendet JBehave auszuführen, aber in dem IDE, ziehe ich einen direkteren Weg der Ausführung.
Das funktioniert für mich:
- in Eclipse Ausführen -> Debug-Konfigurationen ...
- Wählen Sie Maven bauen und klicken Sie auf Neu
- Stellen Sie die Ziele (
clean very
in meinem Fall) und mögliche Parameter - Hit Debug
MVN--o -Dmaven.surefire.debug = "- Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspendiert = y, address = 8787 -Xnoagent -Djava.compiler = NONE" Integration-Test
Diese Linie war für mich perfekt. Richten Sie Ihre JBehave Projekt in Eclipse mit dem Debug-Port (8787) und schnell an den Debugger anschließen, während mvn wartet auf Ihr Eclipse-Projekt zu verbinden.