2009-11-24 4 views
0

Hey les gars, j'ai essayé toute la journée pour obtenir un fichier ant pour construire automatiquement mon projet. Le fichier (ci-dessous) a été trouvé sur une page Web et est assez complet.Ant + Junit travaille en première fois et plus jamais

Mon problème est que cela fonctionne tant que je n'exécute pas la cible "propre". Une fois que j'ai exécuté la cible "propre", la cible "test" cesse de fonctionner. J'obtiens des erreurs NoClassFound sur toutes les classes de test. Même si cela a fonctionné plus tôt.

Je travaille sur un Macbook (10.5.8) en utilisant la dernière version d'eclipse. Cette erreur se produit en cours d'exécution du fichier à partir d'éclipse et d'un terminal en utilisant la version Ant 1.7.1

J'ai modifié le fichier légèrement pour l'adapter à ma structure de fichier qui se présente comme suit:

src/ 
    packageA.packageB/ 
        ClassA.java 
        ... 
        ClassN.java 

unittests/ 
      packageA.packageB/ 
          AllClassTests.java 
          ClassATest.java 
          ... 
          ClassNTest.java 

lib/ 
    junit-4.7.jar 

Le fichier fourmi est :

<project name="SampleJUnitTests" default="dist" basedir="."> 
<description> 
    DataTypes Build File 
</description> 
<!-- set global properties for this build --> 

<property name="project_name" value="DataTypes"/> 
<property name="src" location="src"/> 
<property name="build" location="bin"/> 
<property name="dist" location="dist"/> 
<property name="lib" location="lib"/> 
<property name="reports" location="reports"/> 
<property name="tests" location="unittests"/> 
<property name="tmp" location="tmp_file"/> 

<!-- the names of various distributable files --> 
<property name="jar_name" value="${project_name}.jar"/> 
<property name="war_name" value="${project_name}.war"/> 

<!-- top level targets --> 

<target name="compile" depends="init" description="compile the source code " > 
    <javac srcdir="${src}" destdir="${build}"> 
     <classpath> 
      <fileset dir="lib"> 
       <include name="**/*.jar"/> 
      </fileset> 
     </classpath> 
    </javac> 
</target> 

<target name="dist" depends="compile" description="generate the distributable files " > 
    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> 
    <jar jarfile="${dist}/${jar_name}" basedir="${build}"/> 
</target> 

<target name="clean" description="clean up" > 
    <!-- Delete the ${build} and ${dist} directory trees --> 
    <delete dir="${build}"/> 
    <delete dir="${dist}"/> 
    <delete dir="${reports}"/> 
    <delete dir="${tmp}"/> 
</target> 

<target name="run-tests" depends="compile" description="run your test suite" > 
    <junit printsummary="yes" haltonfailure="no" showoutput="yes" tempdir="${tmp}"> 
     <classpath> 
      <pathelement path="${build}"/> 
      <fileset dir="lib"> 
       <include name="**/*.jar"/> 
      </fileset> 
     </classpath> 
     <batchtest fork="yes" todir="${reports}/raw/"> 
     <formatter type="xml"/> 
     <fileset dir="${tests}"> 
      <include name="**/*.java"/> 
      <exclude name="**/All*Tests.java"/> 
     </fileset> 
     </batchtest> 
    </junit> 
</target> 

<target name ="test" depends="run-tests"> 
    <junitreport todir="${reports}"> 
     <fileset dir="${reports}/raw/"> 
     <include name="TEST-*.xml"/> 
     </fileset> 
     <report format="frames" todir="${reports}\html\"/> 
    </junitreport> 
</target> 

<target name ="run" depends="" description="if this project can be run, run it" > 
</target> 

<!-- supporting targets --> 

<target name="init" description="initialize the build environment" > 
    <!-- Create the time stamp --> 
    <tstamp/> 
    <!-- Create directory structures --> 
    <mkdir dir="${build}"/> 
    <mkdir dir="${lib}"/> 
    <mkdir dir="${dist}/lib"/> 
    <mkdir dir="${reports}"/> 
    <mkdir dir="${reports}/raw/"/> 
    <mkdir dir="${reports}/html/"/> 
    <mkdir dir="${tmp}"/> 
</target> 

<target name="all" depends="clean, test"> 
</target> 

Je donne et espère que quelqu'un peut briller une lumière sur mon problème. Merci beaucoup!

Répondre

2

Vous n'avez aucune cible Ant qui construit les classes de test. Vous pouvez le faire dans le cadre de la cible compile si vous le souhaitez:

<target name="compile" depends="init" description="compile the source code " > 
    <javac srcdir="${src}" destdir="${build}"> 
    <classpath> 
     <fileset dir="lib"> 
     <include name="**/*.jar"/> 
     </fileset> 
    </classpath> 
    </javac> 
    <javac srcdir="${tests}" destdir="${build}"> 
    <classpath> 
     <pathelement path="${build}"/> 
     <fileset dir="lib"> 
     <include name="**/*.jar"/> 
     </fileset> 
    </classpath> 
    </javac> 
</target> 
+0

Merci! C'était ça. Je n'avais pas remarqué que lorsque j'ai modifié le script, leurs tests étaient mélangés avec la source. :) –

Questions connexes