在IntelliJ管理容器中使用Arquillian进行调试

jac*_*des 2 junit jboss intellij-idea jboss-arquillian

我已多次尝试在托管容器环境中调试测试.

我收到JDWP Transport Error错误,socket无法初始化.意味着我无法使用以下属性标记初始化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>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

截图

jac*_*des 5

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

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

所以这就是想法,Run test(第二个JVM将暂停,直到JVM连接到它),然后运行一个新的远程配置,一旦启动,过去的JVM就会运行.

它有点令人困惑,但有效.

请注意,如果您在简单调试模式下只有2个JVM,那么您将调试arquillian/junit JVM,这不是您感兴趣的JVM.

在此输入图像描述