当我通过传递参数
通过eclipse运行java测试文件(单个文件)时-DappRoot = ECM -DappName = ESW -Dapp.module = FNT -Dapp.env = LOC -DcloneNumber = 1
测试文件执行没有错误,如果我不给出参数错误发生,因为无法解决占位符'appRoot'。
我有junit目标以html格式生成报告。
<target name="junit" depends="init-junit">
<junit printsummary="on" fork="yes" forkmode="perBatch" haltonfailure="false" failureproperty="junit.failure" showoutput="false">
<classpath>
<path refid="CLASSPATH_JUNIT"/>
</classpath>
<batchtest fork="no" todir="${TEST_BUILD_DIR}">
<fileset dir="${COMP_TEST_SRC}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
<formatter type="xml" />
</junit>
<junitreport todir="${JUNIT_REPORT}">
<fileset dir="${TEST_BUILD_DIR}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${JUNIT_REPORT}"/>
</junitreport>
</target>
当我在构建脚本上面运行时,会出现以下错误:无法解析占位符'appRoot'作为参数传递的位置。
我已经通过eclipse将参数传递给build.xml,此参数传递给build.xml文件但不传递给java文件。我该如何解决这个问题?
修改 尝试使用以下参数:
<junit printsummary="on" fork="yes" forkmode="perBatch" haltonfailure="false" failureproperty="junit.failure" showoutput="false">
<jvmarg value="-DappRoot=ECM" />
<jvmarg value="-DappName=ESW" />
<jvmarg value="-Dapp.module=FNT" />
<jvmarg value="-Dapp.env=LOC" />
<jvmarg value="-DcloneNumber=1" />
<!--<sysproperty key="appRoot" value="${appRoot}"/>
<sysproperty key="appName" value="${appName}"/>
<sysproperty key="app.module" value="${app.module}"/>
<sysproperty key="app.env" value="${app.env}"/>
<sysproperty key="cloneNumber" value="${cloneNumber}"/>-->
<classpath>
<path refid="CLASSPATH_JUNIT"/>
</classpath>
使用系统参数它工作正常但需要很长时间才能执行。与jvmarg它不起作用。与
相同的错误 <jvmarg value="-DappRoot=${appRoot}" />
http://ant.apache.org/manual/Tasks/junit.html没有为sys和jvm args定义任何限制。
答案 0 :(得分:1)
documentation of the junit ant task显示了它:
<junit fork="yes" ...>
<jvmarg value="-DappRoot=ECM" />
</junit>
如果appRoot属性作为系统属性传递给ant,您可以将其作为ant属性访问:
<junit fork="yes" ...>
<jvmarg value="-DappRoot=${appRoot}" />
</junit>
答案 1 :(得分:1)
您已在fork="no"
元素中设置batchtest
,这会覆盖fork
元素中的junit
设置。这导致junit
任务在与蚂蚁进程相同的JVM中执行,这意味着jvmarg
参数将被忽略。
我还建议使用“一次”的fork模式;这将大大提高性能。
试试这个:
<junit printsummary="on" fork="yes" forkmode="once" maxmemory="512m"
haltonfailure="false" failureproperty="junit.failure"
showoutput="false">
<jvmarg value="-DappRoot=ECM" />
<jvmarg value="-DappName=ESW" />
<jvmarg value="-Dapp.module=FNT" />
<jvmarg value="-Dapp.env=LOC" />
<jvmarg value="-DcloneNumber=1" />
<classpath>
<path refid="CLASSPATH_JUNIT"/>
</classpath>
<batchtest todir="${TEST_BUILD_DIR}">
<fileset dir="${COMP_TEST_SRC}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
<formatter type="xml" />
</junit>
请注意maxmemory
属性。根据需要调整值。