Puede haber una adecuada solución , pero depende de sus necesidades y es necesario utilizar un servidor de CI que puede manejar códigos de retorno proceso de JVM.
La idea básica es detener por completo el proceso de JVM de Maven e informar al sistema operativo que el proceso se detuvo inesperadamente. Entonces, un servidor de integración continua como Jenkins/Hudson debería poder verificar si hay un código de salida distinto de cero y hacerle saber que una prueba ha fallado.
El primer paso es asegurarse de que el fuego salga de la JVM en la primera falla de prueba. Usted puede hacer eso con JUnit 4.7 o superior mediante el uso de una costumbre RunListener
(ponerlo en src/test/java):
package org.example
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
public class FailFastListener extends RunListener {
public void testFailure(Failure failure) throws Exception {
System.err.println("FAILURE: " + failure);
System.exit(-1);
}
}
Entonces, es necesario configurar esa clase de manera segura va a registrarla con el corredor JUnit 4 .Edite su pom.xml
y agregue la propiedad de configuración listener
al maven-surefire-plugin. También necesitará configure surefire para no duplicar un nuevo proceso de JVM para ejecutar las pruebas. De lo contrario, continuará con los próximos casos de prueba.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<forkMode>never</forkMode>
<properties>
<property>
<name>listener</name>
<value>org.example.FailFastListener</value>
</property>
</properties>
</configuration>
</plugin>
Si esto no ayuda, intento bifurcar el plugin de proveedor de maven surefire.
Por cierto, las pruebas unitarias, por definición, deben ejecutarse más rápido que 0.1 segundos. Si su construcción realmente lleva tanto tiempo debido a las pruebas unitarias, tendrá que hacer que corran más rápido en el futuro.
Me temo que la respuesta es, probablemente, "No, no lo es." – BryanD