调试 JBehave 场景
我在调试 jbehave 测试时遇到问题。 我无法让 Maven 启动 jbehave 测试并在断点处停止。 我的 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>
并且我尝试过类似的操作:
$ 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
并且
$ export MVN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" ; mvn -Dtest=MyTest clean test
我可以尝试使用 jsadebugd,但我可能需要完美的计时来实现自动化,所以这听起来像是一个次优的解决方案,而且我觉得 JBehave Maven 插件应该提供此功能。 显然我还没有找到合适的文档。 我有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
以下对我有用:
export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE"
然后开始我的 mvn 测试:
mvn install
(maven 现在挂起等待调试器连接)
然后在远程调试会话中启动 Eclipse,指向本地主机端口 8787(如上所述),并设置适当的断点。
The following worked for me:
export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE"
then start my mvn tests:
mvn install
(maven now hangs waiting for the debugger to connect)
Then start Eclipse in a remote debug session, pointing at local host, port 8787 (as above), with appropriate breakpoints set.
不使用 Maven 启动测试,而是使用 JUnit 在 IDE 中启动测试不是更容易吗? 那么可以直接使用调试器吗? 我通常这样做,CI 服务器使用 maven 来执行 JBehave,但在 IDE 中,我更喜欢更直接的执行方式。
Wouldn't it be easier not to start the tests with maven, but rather in the IDE with JUnit? Then you can use the debugger directly? I normally do it so, that the CI server uses maven to execute JBehave, but in the IDE, I prefer a more direct way of execution.
这对我有用:
clean very
)和可能的参数This worked for me:
clean very
in my case) and possible parametersmvn -e -o -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" 集成测试
这条线非常适合我。 在 eclipse 中设置您的 Jbehave 项目
使用调试端口(8787)并快速连接到调试器,同时 mvn 正在等待连接到您的 eclipse 项目。
mvn -e -o -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" integration-test
This line worked perfect for me. Setup your Jbehave project in eclipse
with the debug port (8787) and connect to the debugger quickly while mvn is waiting to connect to your eclipse project.