9

JBoss 7 (Windows)で JUnit を使用してArquillianテストを使用する Java EE プロジェクトがあります。テストは正常に動作していますが、デバッグできません。

私がググったこと ( https://community.jboss.org/wiki/WhyDontBreakPointsWorkWhenDebugging ) から、Arquillian テストは別の VM で実行されているため、IntelliJ はそれらをデバッグできないことを理解しています。そのマシンにソケット経由でリモート接続するには IntelliJ が必要ですが、その方法がわかりません。

このスレッドを見つけました: IntelliJ での Arquillian によるデバッグ - 管理されたコンテナーしかし、それを機能させる方法がわかりません。

また、私はこのスレッドに足を踏み入れました: http://devnet.jetbrains.com/message/5253623?tstart=0なので、うまくいけば pom.xml の適切な確実な部分を埋めましたが、役に立ちませんでした:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.3</version>
        <configuration>
            <debugForkedProcess>true</debugForkedProcess>
        <skip>false</skip>
    </configuration>
 </plugin>

そのような構成でテストをデバッグする方法を教えてください。

4

2 に答える 2

8

まず、使用しているコンテナーの種類 (マネージド、リモート、または組み込み) に依存します。https://docs.jboss.org/author/display/ARQ/Containersも参照してください。後者の場合、テストは同じ JVM で実行され、たとえば IDE で直接テストをデバッグできます。

この場合、Surefire の構成は重要ではありません。なぜなら、IDE でデバッグしたいからです (IDE 内から Maven ゴールを実行している場合を除く)。

マネージド コンテナーとリモート コンテナーの場合、実際のコンテナーをデバッグする必要があります。これを機能させるには、リモート デバッグ セッションを開くことができるように、適切な JVM オプションをリモート コンテナに渡す必要があります。これを行う 1 つの方法は、arquillian.xmlを使用することです。

http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

<!-- Need to set the default protocol and use resource filtering, because of https://issues.jboss.org/browse/ARQ-579 -->
<defaultProtocol type="Servlet 3.0"/>

<engine>
    <property name="deploymentExportPath">target/artifacts</property>
</engine>


<container qualifier="incontainer">
    <configuration>
        <property name="jbossHome">${jbossTargetDir}</property>
        <property name="javaVmArguments">-Xmx1024m -XX:MaxPermSize=512m -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</property>
        <property name="allowConnectingToRunningServer">true</property>
    </configuration>
</container>

上記の例で重要な部分はjavaVmArgumentsです。

于 2013-07-21T09:50:44.300 に答える