我可以通過Maven或IntelliJ運行Arqullian測試,我使用嵌入容器,最重要的是配置JBoss hom e在arqullian.xml中,也不僅僅是在Maven配置中,IntelliJ知道JBoss home在哪裏。
<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">testing/target/artifacts</property>
</engine>
<container qualifier="jbossas-managed" default="true">
<configuration>
<!-- JBoss embedded does not use this property
<property name="javaVmArguments">-java.util.logging.manager=org.jboss.logmanager.LogManager -Xmx512m -XX:MaxPermSize=256m -Djava.util.logging.manager=org.jboss.logmanager.LogManager</property>
-->
<property name="jbossHome">target/wildfly-8.1.0.Final</property>
<property name="modulePath">target/wildfly-8.1.0.Final/modules</property>
<property name="allowConnectingToRunningServer">true</property>
</configuration>
</container>
重要的調試和運行試驗中的IntelliJ:
從一些原因,你必須指定記錄管理程序將被嵌入的JBoss能夠運行。對於Maven的很容易,你可以將其設置爲配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- Fork every test because it will launch a separate AS instance -->
<forkMode>always</forkMode>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
</configuration>
</plugin>
不過的IntelliJ不關心在Maven的這些插件配置,你必須直接在測試用例的配置設置。我沒找到更好的解決方案。嵌入式容器不關心arqullian.xml中的Java VM配置。
這裏始終是可能性調試throught遠程調試。我喜歡在IDE上做。對我來說這是更舒適的方式。如果要啓用遠程調試,則必須將配置設置爲嵌入式容器的JAVA_OPT或arqullian.xml。
我使用託管容器。我試着玩你的建議,但是當開始調試時,我在控制檯中看到:「在地址:5005處偵聽傳輸dt_socket並且沒有更多事情發生。我發現它是因爲'susspend = y'參數。我想現在我應該讓IntelliJ連接到調試會話,但我不知道該怎麼做。 –
最後我可以調試我的測試。我使用'mvn test -Parq-jbossas-managed'運行JBoss VM,然後在IntelliJ中使用遠程配置文件連接到該VM。是否有可能在Intellij中自動生成?我的意思是在連接之前運行'mvn test'? –
我也想知道如何調試Arquillian測試,就像Idea IDE中的一個簡單單元測試 – zbig