2009-04-08 17 views
3

Ich habe Probleme, meine jbehave-Tests zu debuggen. Ich kann keine Maven bekommen, um die Jbehave-Tests zu starten und an einem Haltepunkt anzuhalten. Ich habe dies in meinem pom:Debuggen von JBehave-Szenarien

<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 Dinge ausprobiert 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 zu verwenden, aber ich, dass wahrscheinlich makellos erfordern Timing zu automatisieren, so dass klingt wie eine suboptimale Lösung, und ich fühle mich wie das JBehave Maven Plugin sollte diese Funktionalität bieten. Klar habe ich gerade noch nicht das richtige Dokument gefunden. Irgendwelche Ideen wie ich das mache?

Antwort

1

Die folgenden für mich gearbeitet: Export MAVEN_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspendieren = y, address = 8787 -Xnoagent -Djava.compiler = NONE"

dann starten meine mvn Tests: mvn install

(maven jetzt warten hängt, für den Debugger verbinden)

Dann Eclipse-Start in einer Remote-Debug-Sitzung, auf dem lokalen Host zeigt, Port 8787 (wie oben), mit entsprechenden Haltepunkten einstellen.

0

Wäre es nicht einfacher, die Tests nicht mit Maven zu starten, sondern in der IDE mit JUnit? Dann können Sie den Debugger direkt verwenden? Normalerweise mache ich das so, dass der CI-Server maven verwendet, um JBehave auszuführen, aber in der IDE bevorzuge ich eine direktere Art der Ausführung.

+0

Nicht, wenn die Tests auf einem anderen Computer als Ihre IDE ausgeführt werden müssen – l0st3d

-1

MVN--o -Dmaven.surefire.debug = "- Xdebug -Xrunjdwp: transport = dt_socket, server = y, y = suspendiert, Adresse = 8787 -Xnoagent -Djava.compiler = NONE" Integrationstest

Diese Linie funktionierte perfekt für mich. Richten Sie Ihr Jbehave-Projekt in Eclipse mit dem Debug-Port (8787) ein und verbinden Sie sich schnell mit dem Debugger, während mvn darauf wartet, eine Verbindung zu Ihrem Eclipse-Projekt herzustellen.

+0

Dies ist fast genau das gleiche wie eine der vorhandenen Antworten. Was ist der Sinn, alles zu wiederholen, was es sagt? –