Tengo un proyecto de Java con algunas pruebas de unidad escritas usando JUnit. Recientemente se han agregado algunas pruebas de unidades nuevas que están escritas en groovy (también utilizando JUnit) ya que es más fácil hacer que esas sean más expresivas y generalmente más fáciles de leer. También nos permite usar el marco spock.Ejecutando pruebas de unidad groovy en ant para un proyecto de Java
El proyecto está construido y probado con ant.
pruebas unitarias antes de añadir las clases maravilloso se llevaron a cabo mediante las siguientes tareas ant:
<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>
Sin embargo, este enfoque no funciona para pruebas maravillosos como los que están en *.groovy
archivos y la JUnit Ant task, comprensiblemente , no los reconoce en el fileset
.
El enfoque alternativo es utilizar *.class
archivos para el batchtest
fileset
así:
<batchtest fork="yes" todir="${test.dir}/report">
<fileset dir="${test.dir}/${build.dir}">
<include name="**/*Test*.class" />
</fileset>
</batchtest>
Esto genera falsos negativos como archivos de clase cierre también están incluidos por lo que una posible solución es excluir esos archivos.
<batchtest fork="yes" todir="${test.dir}/report">
<fileset dir="${test.dir}/${build.dir}">
<include name="**/*Test*.class" />
<exclude name="**/*$*.class" />
</fileset>
</batchtest>
¿Hay una mejor manera de identificar las clases de prueba FO el junit hormiga tarea? Quizás uno basado en la reflexión y el atributo @Test
como una lista manual de todas las clases de prueba (que funcionaría perfectamente) no es realmente una solución sostenible. Algo así como SpecClassFileSelector
del Spock framework.
Gracias. He visto esta página antes de escribir la pregunta. Mis dos soluciones propuestas realmente hacen lo que hace la solución maven: mirar el classpath. – mfloryan