Ejecutar pruebas JUnit 4 "puras" usando hormiga

votos
23

Hemos migrado a JUnit 4 y Ant 1.7

Las pruebas funcionan bien en eclipse, pero las anotaciones se ignoran al ejecutar las pruebas con hormiga.

De acuerdo con la documentación de la tarea Ant junit :

También funciona con JUnit 4.0, incluidas pruebas JUnit 4 puras que usan solo anotaciones y sin JUnit4TestAdapter.

Pero la documentación no explica cómo debe configurarse.

¿Hay algún ajuste especial requerido para la tarea junit? ¿Me estoy perdiendo de algo? Tenemos ambas pruebas que extienden las pruebas TestCase (es decir, estilo 3.8) y Junit 4 puro, ¿podría ser ese el problema?

Publicado el 11/03/2009 a las 16:08
por usuario
En otros idiomas...                            


9 respuestas

votos
14

Estoy usando pruebas de JUnit4 puro con Ant.

Aquí está la parte interesante de mi archivo de compilación:

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*Test*.java"/>
        </fileset>
    </batchtest>
</junit>

Asegúrese de tener la última versión del archivo junit.jar en el directorio lib de Ant. Por lo que sé, la versión requerida se entrega con la versión 1.7 o superior ...

Respondida el 11/03/2009 a las 16:13
fuente por usuario

votos
0

Esta es la parte relevante de mi script genérico ant ... no estoy seguro si eso te ayudará o no ...

 <junit fork="true"
        forkmode="once"
        haltonfailure="false"
        haltonerror="false"
        failureproperty="tests.failures"
        errorproperty="tests.errors"
        includeantruntime="true"
        showoutput="true"
        printsummary="true">
     <classpath>
         <path refid="path-id.test.classpath.run"/>
     </classpath>

     <formatter type="xml"/>

     <batchtest fork="yes"
                todir="${dir.build.testresults}">
         <fileset dir="${dir.src.tests}">
             <include name="**/*Test.java"/>
         </fileset>
     </batchtest>
 </junit>
Respondida el 11/03/2009 a las 16:15
fuente por usuario

votos
-1

Lo que terminé haciendo fue agregar un Ant a una de mis definiciones que usa la tarea>. Et voila.

Respondida el 01/09/2009 a las 21:58
fuente por usuario

votos
0

Aplicar esta anotación a las otras clases org.junit.Ignore

Respondida el 13/12/2010 a las 08:45
fuente por usuario

votos
1

Verificar su definición ruta de clase ... esto solucionó mi problema.

<path id="classpath" description="Classpath do Projeto">
    <fileset dir="${LIB}">
        <include name="**/*.jar" />
        <exclude name="**/.SVN/*.*"/>
    </fileset>
</path>
Respondida el 27/02/2012 a las 20:31
fuente por usuario

votos
2

Esto sucedió a mí y fue porque yo estaba usando tanto las anotaciones y se extiende TestCase.

public class TestXXX extends TestCase {

    @Test
    public void testSimpleValidCase() {
        // this was running
    }

    @Test
    public void simpleValidCase() {
        // this wasn't running
    }
}

Cuando se extiende TestCase está asumiendo el estilo JUnit3 por lo anotaciones junit4 se ignoran.

La solución es dejar que se extiende TestCase.

Respondida el 21/03/2012 a las 10:08
fuente por usuario

votos
7

barcos de hormigas con una versión de JUnit 3 por defecto. JUnit 3 no tiene soporte para las anotaciones de prueba.

Para utilizar el JUnit 4 anotaciones de la tarea junit asegurarse de que proporcione la ubicación de un tarro de JUnit 4 en un elemento de ruta de clase anidada de la tarea JUnit (ver esta entrada en el FAQ de hormigas ).

<junit showoutput="yes" fork="true">
    <classpath>
        <!-- The location of the JUnit version that you want to use -->
        <pathelement location="lib/junit-4.9b1.jar"/>
    </classpath>

    <formatter type="plain" usefile="false" />

    <batchtest>
        <fileset dir="${tests.dir}"/>
    </batchtest>
</junit>

Esta es una solución preferible a sobrescribir la hormiga-junit.jar en ANT_HOME / lib ya que significa que puede mantener su tarro de JUnit en el control de código fuente junto con el código de hacer actualizaciones a versiones posteriores sencillos.

Tenga en cuenta que, si bien no ha especificado ninguna incluyen patrón en mi conjunto de archivos por encima de esto significa que la tarea junit intentará ejecutar JUnit contra todas las clases de esa estructura de directorios que podrían resultar en una serie de clases que se están incluidos que no contienen las pruebas en función de cómo se han estructurado los archivos de origen.

Respondida el 22/03/2012 a las 13:48
fuente por usuario

votos
3

Puede finalmente sólo se encuentra y ejecutar pruebas con el skipNonTests parámetro añadido en 1.9.3+ hormiga!

Este es el fragmento de código de la respuesta aceptada anteriormente (a excepción de la nueva skipNonTests parámetro y deshacerse de la "Prueba" en el requisito de nombre de archivo):

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest skipNonTests="true" fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </batchtest>
</junit>
Respondida el 05/08/2014 a las 20:44
fuente por usuario

votos
0

También probé a hacer pruebas con JUnit 4.0 sin JUnit4TestAdapter, es decir, sin método
de baño junit.framework.Test static () {return new JUnit4TestAdapter (SomeTestClass.class); }

Yo uso hormiga 1.9.4. Ejecutando prueba de hormigas verbosa (-v muestra ANT)

[junit] La ejecución de múltiples pruebas en el mismo VM
[junit] /usr/share/java/junit.jar:/usr/sharejava/ant-launcher.jar:/usr/share/java/ant.jar:/usr Implícitamente añadiendo /share/java/ant/ant-junit.jar a CLASSPATH

Aha, pero todavía hay una cierta-junit-tarea ant. La descarga de este muestra además /usr/share/java/ant/ant-junit4.jar que no se añade de forma implícita. Acabo de añadir explícitamente:

<junit printsummary="yes" 
    fork="yes" 
    forkmode="once"
    maxmemory="1023m" 
    showoutput="no">
    ...
   <classpath>
     <pathelement path="...:${junitJar}:${hamcrestJar}:/usr/share/java/ant/ant-junit4.jar" />
   </classpath>
...
</junit>

Y funcionó. Sin: no. Soy consciente de que esta solución no es bella en todos los ...

Respondida el 28/04/2016 a las 18:57
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more