2009-04-08 10 views
3

J'ai des problèmes pour déboguer mes tests jbehave. Je ne peux pas obtenir le maven pour commencer les tests Jbehave et arrêter à un point d'arrêt. J'ai dans mon pom:Débogage des scénarios JBehave

<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> 

et j'ai essayé des choses comme:

$ 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 

et

$ export MVN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" ; mvn -Dtest=MyTest clean test 

Je peux essayer d'utiliser jsadebugd, mais je qui nécessitera probablement immaculée synchronisation pour automatiser, ce qui ressemble à une solution sous-optimale, et je pense que le plugin JBehave Maven devrait fournir cette fonctionnalité. De toute évidence, je n'ai pas encore trouvé la bonne pièce de documentation. Des idées comment je vais à ce sujet?

Répondre

1

Ce qui suit a fonctionné pour moi: MAVEN_OPTS exportation = "- Xdebug -Xrunjdwp: transport = dt_socket, serveur = y, suspend = y, adresse = 8787 = -Xnoagent -Djava.compiler NONE"

puis commencer à mes tests mvn: mvn install

(maven se trouve maintenant en attente pour le débogueur de se connecter)

Lancez ensuite Eclipse dans une session de débogage à distance, pointant l'hôte local, le port 8787 (comme ci-dessus), avec des points d'arrêt appropriés ensemble.

0

Ne serait-il pas plus facile de ne pas démarrer les tests avec maven, mais plutôt dans l'IDE avec JUnit? Ensuite, vous pouvez utiliser le débogueur directement? Je le fais normalement, que le serveur CI utilise maven pour exécuter JBehave, mais dans l'IDE, je préfère un mode d'exécution plus direct.

+0

Pas si les tests doivent être exécutés sur une machine différente de celle de votre IDE. – l0st3d

-1

mvn -e -o -Dmaven.surefire.debug = "- Xdebug -Xrunjdwp: transport = dt_socket, serveur = y, suspend = y, adresse = 8787 = -Xnoagent -Djava.compiler NONE" integration-test

Cette ligne a fonctionné parfaitement pour moi. Configurez votre projet Jbehave en éclipse avec le port de débogage (8787) et connectez-vous au débogueur rapidement pendant que mvn attend de se connecter à votre projet eclipse.

+0

Ceci est presque exactement la même chose que l'une des réponses existantes. Quel est le point de répéter tout ce qu'il dit? –

Questions connexes