12

我的 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 时,我看到以下输出,这表明工作目录未正确设置:

[junit] 如果在同一 VM 中运行,则忽略 dir 属性

[junit] 使用系统属性 {java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=c:\jdk6\jre\bin, java.vm.version=10.0-b23, ant. lib rary.dir=C:\java\apache-ant-1.7.0\lib, java.vm.vendor=Sun Microsystems Inc., java.vendor.url= http://java.sun.com/ , 路径。分隔符=;、java.vm.name=Java HotSpot(TM) 客户端虚拟机、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\endorsed, os.arch=x86, java .io.tmpdir=C:\Users\donal\AppData\Local\Temp\, line.separator=

4

4 回答 4

15

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

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

于 2009-01-21T20:58:48.143 回答
7

尝试使用 jvmarg:

<junit fork="yes">
  <jvmarg value="-Duser.dir=somedir"/>
  ...
</junit>

请注意,junit标签和batchtest标签上的 fork必须为 true,因为batchtest标签会覆盖junit的值。Jvmargs 仅在 junit fork 一个新的 JVM 时才有效。

于 2009-01-21T20:51:02.837 回答
1

和你一样的问题。

我通过将 batchtest fork 设置为 true 来解决它:

批次测试叉=“没有”..

批量测试 fork="" ..

于 2013-07-19T15:58:00.027 回答
0

您是否尝试过路径元素位置?这对我有用。

  <classpath>
<!-- filesets, etc. -->
<pathelement location="C:/workspace/obp-web" />
  </classpath>
于 2009-08-12T09:09:12.223 回答