Проблема относительного пути в задаче ANT junit - PullRequest
1 голос
/ 23 февраля 2010

Я настроил ant-скрипт как Eclipse Builder для автоматического запуска всех моих тестов, как показано ниже:

<project name="auto-test" default="test">
    <property name="tst-dir" location="C:\STAF\services\custom\TopCoder\bin" />
    <path id="classpath.base" />
    <path id="classpath.test">
        <pathelement location="D:\eclipse\eclipse\plugins\org.junit4_4.3.1\junit.jar" />
        <pathelement location="${tst-dir}" />
        <path refid="classpath.base" />

    </path>
    <target name="test" description="Run the tests">
        <junit>
            <classpath refid="classpath.test" />
            <formatter type="brief" usefile="false" />
            <test name="testDataGenerator.test.AllTests" />
        </junit>
    </target>
</project>

Все было хорошо, прежде чем я изменил файл тестового набора с абсолютного пути на относительный путь:

SAXReader reader = new SAXReader();
Document document = reader.read(new File(".").getCanonicalPath()+"\\conf\\TestData.xml");

Задача ant теперь пытается открыть D: \ eclipse \ eclipse \ conf \ TestData.xml вместо C: \ STAF \ services \ custom \ TopCoder \ conf \ TestData.xml , я также пытаюсь запустить AllTests вручную из Eclipse, и это все хорошо.

Кто-нибудь сталкивался с подобной проблемой раньше?

Заранее спасибо.

PS. ANT_HOME = D: \ затмение \ затмение \ Plugins \ org.apache.ant_1.7.0.v200706080842

Продолжение: Я попытался запустить скрипт ant из командной строки и найти ниже:

  1. C: \ STAF \ services \ custom \ TopCoder> ant -fc: \ STAF \ services \ custom \ TopCoder \ task \ build.xml , скрипт ant работает правильно.

  2. C:> ant -fc: \ STAF \ services \ custom \ TopCoder \ task \ build.xml , сценарий запросит: [junit] C: \ conf \ TestData.xml (Система не может найти указанный путь)

Я также проверил настройку Eclipse Builder, кажется, нет ничего, чтобы изменить путь к D: \ eclipse \ eclipse.

Ответы [ 3 ]

1 голос
/ 26 февраля 2010

Вот решение, которое я нахожу:

Так же, как упоминал kgiannakakis, Ant также начинает выполнять свою задачу из того места, где он был вызван, поэтому нам просто нужно изменить настройку рабочего каталога нашего собственного компоновщика затмений.

  1. На вкладке JRE выберите «Среда выполнения».

  2. Измените рабочий каталог на текущее рабочее пространство.

alt text

1 голос
/ 25 февраля 2010

Java разрешает относительные пути к текущему пользовательскому каталогу, который обычно является каталогом, из которого была вызвана Java-программа.

Одним из способов решения этой проблемы является определение переменной среды для вашего базового пути. Затем вы можете легко использовать «относительные пути» (то есть создавать абсолютные пути, объединяя базовый путь и относительный путь).

0 голосов
/ 26 февраля 2010

Похоже, я пропустил карму, но все равно ...

Мы делаем это: -

build.xml

<project name="whatever">
  <property file="build.${env.COMPUTERNAME}.properties"/>
  <property file="build.properties"/>

build.properties

project.root=..
build.file.dir=${project.root}/buildfiles
deploy.dir=${project.root}/deploy

который, конечно, вы можете переопределить, создав свой собственный build.computername.properties для учета различий в путях для разработчиков и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...