Как установить рабочий каталог для задачи Ant 'junit?

My Ant build включает в себя задачу 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] атрибут dir игнорируется при запуске в той же виртуальной машине

[junit] Использование свойств системы{java.runtime.name = Java (TM) SE Runtime Окружающая среда, 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\Пб 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 = x86, java.io.tmpdir = C:\Users\Донал\AppData\Local\Temp \ line.separator =

Ответ 1

Попробуйте использовать jvmarg:

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

Обратите внимание, что fork должен быть истинным как для тега junit, так и для тега batchtest, поскольку тег batchtest переопределяет значение из junit. Jvmargs работает только в том случае, если junit открывает новую JVM.

Ответ 3

Вы пытались найти место для патчей? Это сработало для меня.

  <classpath>
<!-- filesets, etc. -->
<pathelement location="C:/workspace/obp-web" />
  </classpath>

Ответ 4

Те же проблемы, что и вы.

Я разрешил его, сделав вилку batchtest равной true:

batchtest fork = " no"..

к

batchtest fork = " да"..