cobertura-maven-plugin-Konfiguration schließt
Ich habe ein Maven-Projekt mit einem Testfall DefaultViewTypeToFragmentMapperTest.java
im Verzeichnis /src/test/java/test/com/mycompany/myproduct/android/viewtype2fragmentmapper/
.
Möchte ich in diesem test-Fall ausgeschlossen werden unit-test-coverage-Berechnung. Um dieses Ziel zu erreichen, habe ich so konfiguriert das plugin wie dieses:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<instrumentation>
<excludes>
<exclude>test/co/**/*.class</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
Aber ich sehe immer noch die oben genannten Klassen in der coverage report.
Wie kann ich es beheben, so dass der Testfall nicht angezeigt in den Bericht und seine Reichweite (0 % laut dem Bericht) nicht berücksichtigt?
- Haben Sie konfiguriert die cobertura-maven-plugin als Teil der Berichterstattung oder bauen? Wenn Sie so konfiguriert, wie reporting, nutzen Sie bitte das
mvn site
. Wenn Sie ausführen möchtenmvn cobertura:cobertura
bitte so konfiguriert, wie ein zu bauen. Bitte siehe meine Antwort an stackoverflow.com/questions/15133822/... für weitere Informationen. - Ich konfigurierte es als Teil der
<reporting>
Knoten und ich verwenden Sie nur im Rahmenmvn site
. - Ich fand heraus, dass das plugin eine hilfreiche debug-Protokollierung. Aktivieren Sie es mit
mvn cobertura:... -X
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach viel versuchen und scheitern, ich habe es funktioniert.
Ich habe es arbeiten mit:
Ändern 'aaa' mit Beginn der Paket-name ausgeschlossen werden.
Ändern 'bbb' mit Ihrem Paket-Namen, den Sie möchten, aus dem Bericht ausgeschlossen.
Ich hoffe es hilft,
Marc Andreu
Sollten Sie die
<ignore>
tag.<exclude>
innerhalb<instrumentation>
einfach schließt das Paket aus, was Ihre Instrumentierung. Was in diesem Fall nichts, weil Sie nichts zu tun.Finden Sie die Mojo Maven Cobertura Plugin docs hier.
exclude
oderignore
.Ist es ein Tippfehler?
<exclude>test/co/**/*.class</exclude>
.Den co sollte com.
BTW
<ignores>
weist Cobertura ignorieren alle Aufrufe einer Methode, mit der übereinstimmt, die ignorieren regulären Ausdruck. Es wird NICHT überspringen diese Klassen in instrumention. Ausschließen von Klassen aus, die instrumentiert,<excludes>
verwendet werden soll.The test.co.mycompany.*
Paket-name korrekt ist.Sollten Sie nicht Anhängen .Klasse, wie das folgende Beispiel
Ich hoffe das kann helfen.
Ich verlor gerade zwei Stunden meines Lebens immer einen Ausschluss für Cobertura ausgeschlossen werden, aber es gelang schließlich.
Die Lösung, die ich gefunden ist, dass die plugin-Konfiguration mit mess - & - Ausschluss für die cobertura-maven-plugin MUSS in den build/plugins /build/pluginManagement Kapitel der pom, während es auch muss ein Verweis auf die cobertura-maven-plugin in der Berichterstattung Kapitel.
Der Fallstrick ist hier, dass Sie zunächst beginnen mit der Definition der plugin bei der Berichterstattung Kapitel, sonst wird kein Bericht generiert. Aber die Instrumentierung selbst nicht abholen jede Konfiguration aus, dass ein Teil der pom. Sie brauchen, um zu definieren, dass in der build-Kapitel.
Neben BertKoor's Antwort, möchte ich darauf hinweisen, dass, wenn Sie ausführen
mvn cobertura:cobertura
odermvn cobertura:cobertura-integration-test
direkt, Ihr Bericht wird noch enthalten Versicherungsschutz für alle instrumentierten Klassen, die sich in eurem Zielverzeichnis, wie berichtet hier!Wenn dies der Fall ist, stellen Sie sicher, dass Sie tun
mvn **clean** cobertura:cobertura
um zu bereinigen, die target-dir aus einem früheren build erste, und dann instrument und führen Sie Ihre tests.