Изменить рабочий каталог в задаче ant junit - PullRequest
5 голосов
/ 06 декабря 2010

У меня есть файл ant, который запускает тесты JUnits.Эти тесты основаны на относительном пути к определенным файлам конфигурации.Я попытался установить рабочий каталог для пакетного теста, но не смог.

Я хочу, чтобы рабочий каталог был ${plugins.dir}/${name}

Часть JUnit скрипта ant:

<junit haltonfailure="no" printsummary="on" fork="true" showoutput="true" dir="${plugins.dir}/${name}">
    <jvmarg value="-Duser.dir=${plugins.dir}/${name}"/>
    <classpath> 
        <path refid="project.classpath"/>
        <pathelement location="${plugins.dir}/${dependency}/@dot/"/>
        <pathelement location="${plugins.dir}/${name}/" />
    </classpath>
    <formatter type="xml" />
    <sysproperty key="basedir" value="${plugins.dir}/${name}"/>
    <sysproperty key="dir" value="${plugins.dir}/${name}"/>
    <batchtest todir="${junit.output}">
        <fileset dir="${dir}"> 
            <include name="**\*AllTests.class" />
        </fileset>
    </batchtest>
</junit>

Я гуглил и искал, но я нашел обходные пути для установки "dir", "sysproperty" или "jvmarg".Как вы можете видеть, я перепробовал их все:)

Есть ли способ напечатать текущий тег в теге?Это не поддерживает.Это позволило бы мне проверить, действительно ли каталог был изменен и на что.

Один подстановочный знак в этом уравнении заключается в том, что он запускается в Гудзоне, который запускает процесс затмения, который запускает антраннер.Это так, чтобы мы могли запускать тесты junit и eclipse plugin junit.Я не должен иметь ничего общего с проблемой, я думаю.

Ответы [ 3 ]

5 голосов
/ 05 февраля 2013

У меня был такой же сценарий, и в моем случае я увидел, что dir="...." игнорируется при запуске в том же jvm, поэтому я просто добавил fork='true', и это сработало.

Цитата с сайта документации Apache " dir - Каталог, в котором вызывается виртуальная машина. Игнорируется, если fork отключен. ". Подробнее здесь .

5 голосов
/ 08 декабря 2010

Я думаю, что вы правы в настройке свойства basedir (см. атрибуты проектов ).Однако, поскольку это свойство ANT (а не JVM), оно ТОЛЬКО ЧИТАЕТСЯ!

Влияет ли это на другую цель, если вы устанавливаете basedir при вызове задачи ant?См. Справочник по командной строке .

ant -Dbasedir=somedir

В качестве альтернативы, добавьте новый процесс ant для вызова цели junit.См. Задачу AntCall или Задача Ant .В следующих примерах предполагается, что цель junit содержит вашу задачу junit.Я использовал эту задачу для других свойств (до сих пор никогда не нуждался в свойстве basedir.

<antcall target="junit">
  <param name="basedir" value="${plugins.dir}/${name}"/>
</antcall>

<ant dir="${plugins.dir}/${name}" target="junit" />
1 голос
/ 29 июля 2013

Я использую NetBeans.Когда я добавляю в свойства Ant (из Tools, Options, Java, Ant) work.dir=C:/MyWorkingDir/, он выполняет ant с помощью следующей команды и изменяет рабочий каталог на C:\MyWorkingDir:

ant -f D:\\workspace\\lib\\project -Dfork=true -Djavac.includes=com/myapp/MyTest.java -Dtest.includes=com/myapp/MyTest.java "-Dwork.dir=C:/MyWorkingDir/" test-single
...