Муравьиный путь и junit.jar - PullRequest
       39

Муравьиный путь и junit.jar

16 голосов
/ 22 января 2011

У меня есть build.xml, который позволяет мне запускать тесты junit.Вот соответствующая часть:

<path id="JUnit 4.libraryclasspath">
    <pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>
    <pathelement location="../../../../../eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
</path>
<path id="MyProject.classpath">
    <pathelement location="bin"/>
    <path refid="JUnit 4.libraryclasspath"/>
</path>

<target name="run_unit_tests" depends="build">
        <mkdir dir="${junit.output.dir}"/>
        <junit printsummary="yes" haltonfailure="no">   
            <classpath refid="MyProject.classpath" />

            <formatter type="xml"/>
            <batchtest todir="${junit.output.dir}">
                    <fileset dir="${src}">
                            <include name="**/*Test*.java"/>
                    </fileset>
            </batchtest>
        </junit>
</target>

Если заменить строку:

<pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

на

<pathelement location="${eclipse.home}/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

Изменение нарушает путь к классу.Я получаю следующую ошибку:

<classpath> для <junit> должен включать junit.jar, если он не находится в собственном пути к Ant

Насколько я понимаюАтрибут location должен содержать одинаковое значение в обоих случаях.Так в чем же причина?

В качестве дополнительного вопроса этот файл сборки не будет работать в среде с другой версией junit (путь будет поврежден).Можно ли добавить "общий" путь к junit.jar?

Ответы [ 2 ]

24 голосов
/ 22 января 2011

Библиотека JUnit находится там, где вы говорите, чтобы она находилась. Лично я полностью забуду о связывании файлов jar, поставляемых с Eclipse, и вместо этого скачаю файлы jar напрямую .

Если у меня есть проект, скажем, по пути /project, я бы попытался поместить зависимость где-нибудь в этой иерархии, например, в /project/test/lib/junit.jar. Если мой файл сборки муравья имеет значение /project/build.xml, то это так же просто, как добавить ./test/lib/junit.jar в путь к классам JUnit. Попытка сослаться на произвольное местоположение на вашем компьютере хрупка (помните, Eclipse может быть установлен в любом месте ), особенно при использовании относительных путей (поскольку содержимое вашего проекта может также быть сохраненным в любом месте ).

4 голосов
/ 22 января 2011

Вы всегда можете поставить ссылку на свой jar-файл в другое место, если вы используете Linux. Таким образом, вы можете символически связать его с путем, который не включает версию. Например:

 ln -s plugins/org.junit4_4.5.0.v20090824/junit.jar /wherever/junit.jar

Возможно, вы захотите иметь папку с библиотеками вне подкаталогов eclipse. Вы также можете использовать ivy или maven для управления своими зависимостями.

Я не уверен, почему ваш приведенный выше пример не работает, но сообщение об ошибке подразумевает, что junit.jar не найден. Вы уверены, что eclipse.home установлен? Вы можете повторить это с:

 <echo message="${eclipse.home}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...