我有一个部署在 jboss 7.1.3 上并使用 arquillian 进行测试的项目,我正在尝试向它添加代码覆盖率指标。
我正在使用托管容器选项(jboss-as-arquillian-container-managed),现在我刚刚尝试将 -javaagent 参数添加到 arquillian 用于启动 jboss 的 jvm 参数,所以我的 arquillian.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<defaultProtocol type="Servlet 3.0"/>
<engine>
<property name="deploymentExportPath">/tmp</property>
</engine>
<container qualifier="jboss" default="true">
<configuration>
<property name="outputToConsole">true</property>
<property name="jbossHome">[jboss home]</property>
<property name="javaHome">[java home]</property>
<property name="javaVmArguments">-Xmx2048m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Djboss.server.log.dir=logs -javaagent:[profile]\.m2\repository\org\jacoco\org.jacoco.agent\0.6.2.201302030002\org.jacoco.agent-0.6.2.201302030002-runtime.jar=destfile=C:\jacoco.exec,includes=*,excludes=,append=true,output=file,classdumpdir=classdumpdir,dumponexit=true</property>
<property name="startupTimeoutInSeconds">120</property>
<property name="allowConnectingToRunningServer">true</property>
</configuration>
</container>
</arquillian>
我 100% 确定这个参数被采纳了,因为 jacoco.exec 文件和 classdumpdir 都被创建了。
问题是 jacoco.exec 文件是空的。jboss 已启动,测试运行并成功完成,jboss 已关闭,classdumpdir 已填充(因此根据 jacoco 规范,这意味着它可以正确找到我的类)但 jacoco.exec 仍然完全为空。
如果我向我自己手动启动的完全相同的 jboss 提供确切的保存javaagent
参数,那么一切正常。
我究竟做错了什么?