我的Ant构建包括一个运行一些测试的junit任务。为了使测试起作用,必须更改指定当前工作目录(user.dir
)的属性的值,但我不确定如何实现此目的。
有问题的任务目前看起来像这样:
<junit printsummary="withOutAndErr" fork="true"
haltonfailure="yes" showoutput="true"
filtertrace="false" dir="C:/workspace/obp-web">
<jvmarg value="-Duser.dir=C:/workspace/obp-web"/>
<classpath>
<fileset dir="${web.lib.dir}" includes="**/*.jar"/>
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</classpath>
<batchtest fork="no" todir="${web.build.dir}/testresults">
<formatter type="xml"/>
<zipfileset src="${web.build.dir}/test-obp-web.jar">
<include name="**/*Test.class"/>
</zipfileset>
</batchtest>
</junit>
请注意,我尝试使用“dir”属性和“jvmarg”任务将工作目录更改为C:/ workspace / obp-web。但是当我运行Ant并打开详细输出时,我看到以下输出,表明工作目录未正确设置:
如果在同一个VM中运行[junit] dir属性
[junit]使用系统属性 {java.runtime.name = Java(TM)SE运行时 环境, sun.boot.library.path = C:\ JDK6 \ JRE \ bin中, java.vm.version = 10.0-b23,ant.lib rary.dir = C:\的java \阿帕奇-ANT-1.7.0 \ lib中, java.vm.vendor = Sun Microsystems Inc., java.vendor.url = http://java.sun.com/, path.separator =;,java.vm.name = Java HotSpot(T M)客户端VM, file.encoding.pkg = sun.io, user.country = CA, sun.java.launcher = SUN_STANDARD, sun.os.patch.level = Service Pack 1, java.vm.specification.name = Java虚拟机规范, user.dir = c:\ workspace \ _ obp-ear ,java.runtime.version = 1.6.0_07-b06, java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment, java.endorse d.dirs = C:\ JDK6 \ JRE \ lib中\核可 os.arch = 86, java.io.tmpdir = C:\ Users \用户敦尔\应用程序数据\本地\ TEMP \, line.separator =
答案 0 :(得分:14)
使用属性“dir”(还必须分叉vm):
答案 1 :(得分:7)
尝试使用jvmarg:
<junit fork="yes">
<jvmarg value="-Duser.dir=somedir"/>
...
</junit>
请注意, juntest 标记和 batchtest 标记上的必须为 batchtest 标记覆盖 junit 的值。 Jvmargs仅在junit分支新JVM时才有效。
答案 2 :(得分:0)
您是否尝试过pathelement位置?这对我有用。
<classpath>
<!-- filesets, etc. -->
<pathelement location="C:/workspace/obp-web" />
</classpath>
答案 3 :(得分:0)
和你一样的问题。
我通过将batchtest fork设为true来解决它:
batchtest fork =“没有”..
到
batchtest fork =“是”..