Wie bekomme ich Cowertura zum Scheitern? M2 Build für niedrige Codeabdeckung

8

Ich versuche, meine WAR-Projekt-Build zu scheitern, wenn die Zeilen- oder Zweigabdeckung unterhalb der angegebenen Schwellenwerte liegt. Ich habe die auf Seite 455 des hervorragenden Buches Java Power Tools bereitgestellte Konfiguration verwendet, aber ohne Erfolg. Hier ist der relevante Ausschnitt aus Maven 2 POM meines Projekts:

%Vor%

Wie gesagt, der Abdeckungsbericht funktioniert einwandfrei. Das Problem besteht darin, dass das Ziel "Installation" nicht fehlschlägt, wie es der Fall sein sollte, wenn die Zeilen- oder Zweigabdeckung unterhalb der angegebenen Schwellenwerte liegt. Hat jemand das funktioniert, und wenn ja, wie sieht Ihr POM aus und welche Version von Cobertura und Maven benutzen Sie? Ich benutze Maven 2.0.9 und Cobertura 2.2.

Ich habe versucht, die Cobertura-Dokumente zu googeln und zu lesen, aber kein Glück (letzteres ist spärlich, um es gelinde auszudrücken).

    
Andrew Swan 28.10.2009, 03:12
quelle

2 Antworten

15

Nach meinem Wissen, wenn das <haltOnFailure> -Element auf "true" gesetzt ist und eine der angegebenen Prüfungen fehlschlägt, führt Cobertura dazu, dass der Build fehlschlägt was Sie verlangen. Tatsächlich ist dieses Element jedoch standardmäßig auf true eingestellt, wenn Sie es nicht angeben, sodass Sie es nicht zu Ihrer Konfigurationsprüfungen . Der Build unterhalb eines Überdeckungsschwellwerts ist (oder sollte zumindest) das Standardverhalten sein.

BEARBEITEN: Ich habe weitere Tests durchgeführt und haltOnFailure scheint auf meiner Umgebung wie erwartet zu funktionieren (Maven 2.2.1. und Versionen 2.3, 2.2, 2.1 des Plugins, dh Versionen 1.9. 2, 1.9, 1.8 von cobertura auf Linux). Ich aktualisiere diese Antwort mit dem folgenden Ergebnis.

Eigentlich habe ich ein <execution> Element zu meinem Pom hinzugefügt. Ich könnte den Teil von cobertura: falsch interpretieren die Dokumentation, die es sagt "< em> Wird standardmäßig an die Lebenszyklusphase gebunden: verify "aber ohne das Element <execution> , cobertura: check wurde während der verify Phase meines Builds nicht ausgelöst. Unter dem Setup, das ich für das cobertura-maven-plugin verwendet habe:

%Vor%

Ich erhalte das folgende Ergebnis, wenn mvn clean install in einem frisch generierten Maven-Projekt (mit mvn archetype:create ) ausgeführt wird, das mit der oben erwähnten Plugin-Konfiguration gepatcht wurde:

%Vor%

Ich habe nicht mit maven 2.0.9 getestet, aber auf meinem Rechner erzeugt haltOnFailure einen BUILD ERROR und stoppt den Build. Ich sehe keine Unterschiede zu Ihrer Plugin-Konfiguration, ich kann das beschriebene Verhalten nicht reproduzieren.

    
Pascal Thivent 10.12.2012, 05:51
quelle
3

Fügen Sie dem & lt; check / & gt; Konfiguration.

%Vor%     
Brian Matthews 13.10.2008 08:31
quelle