2013-03-16 2 views
0

J'ai une question et apprécierais si vous pouviez aider. Donc, j'ai un fichier build.xml pour fourmi en utilisant JUnit et tout va bien sur Windows OS. Mais si je copie/colle build.xml dans le même projet java sur Mac OS, il ne peut même pas construire ou il n'exécute pas de tests.fichier build.xml pour JUnit est OK sur Windows mais pas sur OS X

Voici mon build.xml (choses que je changé dans build.xml pour faire fonctionner sur Mac sont dans les commentaires et gras):

<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> 

ce que je fais est pas underestand que si je ne change pas classpathref de "compile.path" à "test.path" (quatrième et dernière chose que j'ai mis en commentaire), puis j'ai reçu le message BUILD FAILED et ce paquet org.junit n'existe pas. donc si j'ai mis "test.path", j'ai reçu le message BUILD SUCCESSFUL, mais aucun des tests n'est fait (index.html généré par JUnit indique qu'aucun test n'est fait, et aussi le fichier xml généré par JUnit est vide). Qu'est-ce que je dois changer pour le faire fonctionner? Merci pour votre aide


EDIT Enfin solevd après 5 jours à la recherche d'erreur. Bien sûr, c'était stupide. Mon fichier de test se trouvait dans le même répertoire que le code source dans le répertoire de test. Merci evreyone pour l'aide et désolé de t'avoir dérangé.

+0

Pour les propriétés 'junit.home' et' jacoco.home', quelles sont les valeurs que vous utilisez sous OS X? –

+0

/usr/local/junit et/usr/local/jacoco cela devrait être bien, je pense que ce n'est pas un problème avec cela – user2112471

+0

@ user2112471: Bon à voir le problème résolu. Comment cela fonctionnait-il sur une plate-forme, pas sur d'autres? – Jayan

Répondre

0

(Cela aurait pu être un commentaire, mais je dois une mise en forme)

Run ant avec option - debug. Redirige la sortie vers un fichier. Recherchez ensuite les messages contenant une chaîne contenant 'dropping'. Cela indique un problème avec les chemins et la fourmi ignore certains pot comme ils ne sont pas trouvés.

Ensuite, évitez le codage en dur du chemin. Si nécessaire, vous pouvez obtenir des valeurs de environment variable ou transmettre la propriété de ligne de commande. Par exemple -Djunit.home=/my/new/path

+0

n'a pas réellement résolu mon problème, mais en faisant cela, j'ai réalisé où était-il. Merci:) – user2112471