Как мне установить рабочий каталог для задачи Ant 'junit'? - PullRequest
12 голосов
/ 21 января 2009

Моя сборка 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] атрибут 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 \ апач-муравей-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) клиентская виртуальная машина, file.encoding.pkg = sun.io, user.country = CA, sun.java.launcher = SUN_STANDARD, sun.os.patch.level = Пакет обновления 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 =

Ответы [ 4 ]

14 голосов
/ 21 января 2009

Используйте атрибут "dir" (также должен быть форк vm):

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

7 голосов
/ 21 января 2009

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

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

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

0 голосов
/ 19 июля 2013

Та же проблема, что и у вас.

Я решил эту проблему, установив для batchtest форка значение true:

batchtest fork = " no " ..

до

batchtest fork = " yes " ..

0 голосов
/ 12 августа 2009

Вы пробовали местоположение патела? Это сработало для меня.

  <classpath>
<!-- filesets, etc. -->
<pathelement location="C:/workspace/obp-web" />
  </classpath>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...