¿Cómo puedo hacer que la tarea Ant JUnit ejecute todas las pruebas y luego detenga el resto de la compilación si falla alguna de las pruebas?
junit3 (1)
Estoy ejecutando JUnit a través de Ant usando un objetivo como este:
<target name="junit" depends="compile">
<mkdir dir="${report.dir}"/>
<junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
<classpath>
<path refid="classpath"/>
<path location="${classes.dir}"/>
</classpath>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<batchtest fork="yes" todir="${report.dir}">
<fileset dir="${src.dir}" includes="**/*Tests.java" />
</batchtest>
</junit>
</target>
Tengo una clase como esta:
public class UserTests extends TestCase {
public void testWillAlwaysFail() {
fail("An error message");
}
public void testWillAlwaysFail2() {
fail("An error message2");
}
}
haltonfailure="yes"
parece hacer que la compilación se detenga tan pronto como una sola prueba haya fallado, registrando solo la primera prueba fallida. Si se configura en "off", toda la compilación se realizará correctamente (incluso si los mensajes de error de prueba se escriben en la salida).
Lo que quiero es que todas las pruebas se ejecuten (incluso si una de ellas ha fallado), y luego se detiene la compilación si alguna de las pruebas ha fallado.
¿Es posible hacer esto?
Puede configurar el atributo failureproperty
de la tarea junit
y luego probar la propiedad con la tarea fail
:
<junit haltonfailure="no" failureproperty="test.failed" ... >
...
</junit>
<fail message="Test failure detected, check test results." if="test.failed" />