Es kann eine geeignete Abhilfe, aber es hängt von Ihren Anforderungen und Sie brauchen einen CI-Server zu verwenden, die JVM-Prozess Rückgabecodes verarbeiten kann.
Die Grundidee besteht darin, Mavens JVM-Prozess vollständig zu stoppen und dem Betriebssystem mitzuteilen, dass der Prozess unerwartet gestoppt wurde. Dann sollte ein Continuous Integration Server wie Jenkins/Hudson in der Lage sein, nach einem Nicht-Null-Exit-Code zu suchen und Sie wissen zu lassen, dass ein Test fehlgeschlagen ist.
Der erste Schritt besteht darin, die JVM beim ersten Testfehler zu verlassen. Sie können das tun mit JUnit 4.7 oder höher durch Verwendung eines benutzerdefinierten RunListener
(Put es in 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);
}
}
Dann müssen Sie diese Klasse so konfigurieren, todsichere es mit dem JUnit 4 Runner registrieren wird .Bearbeiten Sie Ihre pom.xml
und fügen Sie dem maven-surefire-plugin die Konfigurationseigenschaft listener
hinzu. Sie müssen auch konfigurieren, um einen neuen JVM-Prozess für die Ausführung der Tests nicht zu verzweigen. Sonst wird es nur mit den nächsten Testfällen weitergehen.
<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>
Wenn dies nicht hilft, würde ich versuchen, das Maven todsichere junit Anbieter Plugin gabeln.
BTW, Unit Tests, per Definition, sollte schneller als 0,1 Sekunden laufen. Wenn Ihr Build aufgrund der Komponententests wirklich so lange dauert, müssen Sie sie in Zukunft schneller ausführen.
Ich habe Angst, dass die Antwort ist wahrscheinlich "Nein, es ist nicht." – BryanD