Ho un progetto Java con alcuni test di unità scritti utilizzando JUnit. Recentemente sono stati aggiunti alcuni nuovi test unitari scritti in groovy (anche usando JUnit) in quanto è più facile rendere questi piùpiù espressivi e generalmente più facili da leggere. Ci consente anche di usare il framework Spock.Esecuzione di test di unità groovy in form per un progetto java
Il progetto è stato creato e testato con ant.
unit test Prima sono state aggiunte le classi Groovy sono stati eseguiti utilizzando il seguente compito formica:
<target name="test" depends="test-compile">
<junit printsummary="yes">
<classpath>
<path refid="test.classpath"/>
</classpath>
<formatter type="plain"/>
<batchtest fork="yes" todir="${test.dir}/report">
<fileset dir="${test.dir}/unit" includes="**/*.java"/>
</batchtest>
</junit>
</target>
Tuttavia, questo approccio non funziona per le prove groove come quelli sono in *.groovy
file e la JUnit Ant task, comprensibilmente , non li riconosce nello fileset
.
L'approccio alternativo è quello di utilizzare i file *.class
per la batchtest
fileset
in questo modo:
<batchtest fork="yes" todir="${test.dir}/report">
<fileset dir="${test.dir}/${build.dir}">
<include name="**/*Test*.class" />
</fileset>
</batchtest>
Questo genera falsi negativi come file di classe di chiusura sono inclusi anche così una possibile soluzione è quella di escludere questi file.
<batchtest fork="yes" todir="${test.dir}/report">
<fileset dir="${test.dir}/${build.dir}">
<include name="**/*Test*.class" />
<exclude name="**/*$*.class" />
</fileset>
</batchtest>
C'è un modo migliore per identificare classi di test JUnit FO il formica compito? Forse uno basato sulla riflessione e l'attributo @Test
come elencare manualmente tutte le classi di test (che funzionerebbero perfettamente) non è in realtà una soluzione gestibile. Qualcosa come il SpecClassFileSelector
dal Spock framework.
Grazie. Ho visto questa pagina prima di scrivere la domanda. Le mie due soluzioni proposte fanno effettivamente quello che fa la soluzione Maven: guarda il classpath. – mfloryan