2011-01-21 7 views
5

J'ai un répertoire avec un tas de tests JUnit dans mon projet. Jusqu'à présent, j'ai utilisé une cible séparée pour chaque test unitaire. Par exemple:Exécuter tous les tests unitaires avec le générateur Ant

<target name="MyTest"> 
     <mkdir dir="${junit.output.dir}"/> 
     <junit fork="yes" printsummary="withOutAndErr"> 
      <formatter type="xml"/> 
      <test name="tests.MyTest" todir="${junit.output.dir}"/> 
      <classpath refid="MyProject.classpath"/> 
     </junit> 
    </target> 

Cette méthode nécessite que je modifie le fichier de construction chaque fois que j'ajoute un test unitaire.
Je veux pouvoir exécuter tous les tests unitaires dans le projet avec une seule cible de constructeur Ant.
Est-il possible de faire?

Répondre

9

Eh oui, il est, vous avez besoin de regarder l'étiquette fileset, par exemple:

<junit printsummary="yes" haltonfailure="yes"> 
    <classpath> 
    <pathelement location="${build.tests}"/> 
    <pathelement path="${MyProject.classpath}"/> 
    </classpath> 

    <formatter type="xml"/> 

    <batchtest fork="yes" todir="${reports.tests}"> 
    <fileset dir="${src.tests}"> 
     <include name="**/*Test*.java"/> 
     <exclude name="**/AllTests.java"/> 
    </fileset> 
    </batchtest> 
</junit> 

L'important est l'utilisation de fileset et un glob/modèle générique pour correspondre aux noms des tests. Documents complets sur la tâche JUnit avec des exemples ici:

http://ant.apache.org/manual/Tasks/junit.html

3

Eh oui! Nous le faisons en utilisant une commande de lots de fourmis. On dirait ceci:

 <batchtest todir="${junit.report.dir}"> 
      <fileset dir="${basedir}\test\unit"> 
       <include name="**/*Test.java" /> 
      </fileset> 
     </batchtest> 

Google, il devrait vous trier

Questions connexes