我可以通过 Maven 或 IntelliJ 运行 Arqullian 测试。我使用嵌入式容器。最重要的是在 arqullian.xml 中配置 JBoss 主页,而不仅仅是在 Maven 配置中让 IntelliJ 知道 JBoss 主页在哪里。
<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 配置。
这里总是有可能通过远程调试进行调试。我喜欢在 IDE 做这件事。对我来说,这是更舒适的方式。当您想要启用远程调试时,您必须将配置设置为嵌入式容器或 arqullian.xml 的 JAVA_OPT。