如何设置Ant'junit'任务的工作目录?

时间:2009-01-21 20:42:43

标签: java ant junit

我的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 =

4 个答案:

答案 0 :(得分:14)

使用属性“dir”(还必须分叉vm):

http://ant.apache.org/manual/Tasks/junit.html

答案 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 =“”..