Файл build.xml для JUnit подходит для Windows, но не для OS X

У меня есть один вопрос, и я был бы признателен, если бы вы могли помочь. Итак, у меня есть файл build.xml для ant, использующего JUnit, и все идет нормально в ОС Windows. Но если я скопирую / вставлю build.xml в тот же java-проект в Mac OS, он даже не сможет построить или не запустит тесты.

Вот мой build.xml (вещи, которые я изменил в build.xml для работы на Mac, выделены жирным шрифтом в комментариях):

<project name="Brojevi" default="jar" basedir="."
xmlns:jacoco="antlib:org.jacoco.ant">

<description>
Build datoteka za projekt Brojevi.
</description>


<property name="src" location="src"/>
<property name="src.java" location="${src}/main/java"/>
<property name="src.test" location="${src}/test/java"/>
<property name="build" location="build"/>
<property name="build.classes" location="${build}/classes"/>
<property name="build.test" location="${build}/test"/>
<property name="dist" location="dist"/>


<property name="junit.home" value="d:/usr/junit-4.11" /> <!--changed path -->
<property name="jacoco.home" value="d:/usr/jacoco-0.6.3" /> <!--changed path -->

<taskdef uri="antlib:org.jacoco.ant"
resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacoco.home}/lib/jacocoant.jar"/>
</taskdef>


<path id="compile.path">
<pathelement location="${build.classes}"/>
</path>


<path id="test.path">
<path refid="compile.path"/>
<pathelement location="${build.test}"/>
<fileset dir="${junit.home}">
<include name="**/*.jar"/> <!--changed path -->
</fileset>
</path>

<target name="init">

<tstamp/>

<mkdir dir="${build}"/>
<mkdir dir="${dist}"/>
</target>

<target name="compile" depends="init"
description="Prevođenje izvornog koda">
<mkdir dir="${build.classes}"/>

<javac srcdir="${src.java}" destdir="${build.classes}"
classpathref="compile.path"  <!--changed to "test.path" -->
encoding="UTF-8" debug="on"
debuglevel="lines,vars,source"
includeAntRuntime="false" />
</target>

<target name="compile-tests" depends="compile"
description="Prevođenje izvornog koda testova">
<mkdir dir="${build.test}"/>

<javac srcdir="${src.test}" destdir="${build.test}"
classpathref="test.path"
encoding="UTF-8" debug="on"
debuglevel="lines,vars,source"
includeAntRuntime="false" />
</target>

<target name="run-tests" depends="compile-tests"
description="Izvođenje definiranih testova" >
<mkdir dir="${dist}/test-reports/xml"/>
<mkdir dir="${dist}/test-reports/html"/>
<mkdir dir="${dist}/test-reports/coverage"/>


<jacoco:coverage
destfile="${dist}/test-reports/xml/jacoco.exec">
<junit printsummary="yes" haltonfailure="yes"
fork="true" forkmode="once">
<classpath refid="test.path" />

<formatter type="plain"/>
<formatter type="xml"/>

<batchtest fork="yes" todir="${dist}/test-reports/xml">
<fileset dir="${src.test}">
<include name="**/*Test*.java"/>
</fileset>
</batchtest>
</junit>
</jacoco:coverage>


<junitreport todir="${dist}/test-reports/xml">
<fileset dir="${dist}/test-reports/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${dist}/test-reports/html"/>
</junitreport>


<jacoco:report>
<executiondata>
<file file="${dist}/test-reports/xml/jacoco.exec"/>
</executiondata>

<structure name="${ant.project.name}">
<classfiles>
<fileset dir="${build.classes}"/>
<fileset dir="${build.test}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src.java}"/>
<fileset dir="${src.test}"/>
</sourcefiles>
</structure>

<html destdir="${dist}/test-reports/coverage"/>

</jacoco:report>

</target>

<target name="clean"
description="Brisanje generiranog sadržaja" >

<delete dir="${build}" failonerror="false" />
<delete dir="${dist}" failonerror="false" />
</target>

</project>

что я не недооцениваю, так это то, что если я не изменю classpathref с "compile.path" на "test.path" (четвертое и последнее, что я добавляю в комментарий), то я получу сообщение BUILD FAILED и этот пакет org.junit не существует. поэтому, если я поставил test.path, я получил сообщение BUILD SUCCESSFUL, но ни один из тестов не был выполнен (index.html, сгенерированный JUnit, говорит, что тесты не выполняются, а также xml-файл, созданный JUnit, пуст). Что мне нужно изменить, чтобы он заработал? Спасибо за вашу помощь


ИЗМЕНИТЬ Наконец, solevd после 5 дней поиска ошибки. Конечно, это было глупо. Мой тестовый файл находился в том же каталоге с исходным кодом, а не в тестовом каталоге. Спасибо evreyone за помощь и извините за беспокойство.


person user2112471    schedule 16.03.2013    source источник
comment
Какие значения свойств junit.home и jacoco.home вы используете в OS X?   -  person Saulo Silva    schedule 17.03.2013
comment
/ usr / local / junit и / usr / local / jacoco, которые должны быть в порядке, я думаю, что это не проблема   -  person user2112471    schedule 17.03.2013
comment
@ user2112471: Приятно видеть, что проблема решена. Как это работало на одной платформе, а не на другой?   -  person Jayan    schedule 18.03.2013
comment
@Jayan: так как я не самый большой поклонник Windows, мне понравилось изменение. Я могу сказать, что Mac основан на UNIX, что мне нравится, и я обязательно останусь с ним. С нетерпением жду нового Java-проекта :)   -  person user2112471    schedule 19.03.2013


Ответы (1)


(Это мог быть комментарий, но мне нужно форматирование)

Запустите ant с параметром -debug. Перенаправить вывод в файл. Затем найдите сообщения со строкой, содержащей 'dropping'. Это указывает на проблему с путями, и муравей игнорирует определенные jar-файлы, поскольку они не найдены.

Во-вторых, избегайте жесткого кодирования пути. При необходимости вы можете получить значения из переменная окружения или передать свойство командной строки. Например -Djunit.home=/my/new/path

person Jayan    schedule 17.03.2013
comment
на самом деле не решил мою проблему, но, сделав это, я понял, где это было. Спасибо:) - person user2112471; 17.03.2013