2

我曾多次尝试在托管容器环境中调试测试。

我收到JDWP Transport Errorsocket failed to initialize之类的错误。意味着我无法使用以下属性标签初始化 arquillian。

我的 arquillian.xml 文件如下所示:

<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<engine>
<property name="deploymentExportPath">target/arq.deployments</property>
</engine>

<container qualifier="jboss" default="true">
<protocol type="jmx-as7">
<property name="executionType">MANAGED</property>
</protocol>
<configuration>
<property name="javaVmArguments">-Xrunjdwp:transport=dt_socket,address=55407,server=y,suspend=y -Xmx512m -XX:MaxPermSize=128m</property>
</configuration>
</container>
</arquillian>

我错过了什么吗?

截屏

4

1 回答 1

5

在这种情况下运行了 3 个 JVM。所以这是一个特殊的调试案例。

  1. 第一个 JVM-> 由 Arquillian/Junit 启动以执行测试。
  2. 第二个 JVM-> 由 Arquillian 启动以运行托管 Jboss。
  3. 3rd JVM-> 这是一个远程调试配置,必须移植到 2 号 JVM 才能调试 2nd JVM。看看这个博客

所以这就是想法,运行测试(第二个 JVM 将被挂起,直到一个 JVM 连接到它),然后运行一个新的远程配置,一旦启动,过去的 JVM 就会运行。

这有点令人困惑,但有效。

请注意,如果您只有 2 个处于简单调试模式的 JVM,您将调试 arquillian/junit JVM,这不是您感兴趣的。

在此处输入图像描述

于 2013-01-25T19:36:07.743 回答