2016-05-23 8 views
1

Ich habe kürzlich versucht, Cobertura-Plugin für unser Projekt zu integrieren. Aber ich lief zu einem seltsamen Problem. Nun, wenn ich versuche, dies zu tun:Wie benutzt man das Cobertura Maven Plugin, damit der Bytecode nicht verändert wird?

mvn clean package cobertura:check-integration-test

Mein Projekt ganz gut zusammenfügt. Aber nach deploy hier ist das, was ich als eine Nachricht erhalten:

java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/LightClassmapListener

Dies geschieht, wie ich sie verstehe, weil cobertura den Bytecode meiner Klassen verändert. Also, wie sollte ich fortfahren, Prüfungen durchzuführen und den Code zu erstellen? Im Moment komme ich mit der folgenden Lösung für Teamcity bis:

Erster Schritt läuft cobertura:

mvn clean package cobertura:check-integration-test

Nach diesem zweiten Schritt wird mit der normalen Montage:

mvn clean package

Dies scheint zu arbeiten, aber es scheint irgendwie komisch, dass ich den Prozess der Verpackung zweimal ausführen muss (das dauert doppelte Zeit), nur um einen sauberen Build mit Bytecode zu machen, der von cobe nicht beeinflusst wird rtura-Plugin.

Antwort

0

Wenn Sie qualinsight-mojo-cobertura verwenden, werden Ihre Klassen zum Zeitpunkt der Instrumentierung gesichert und dann zur Berichtszeit wiederhergestellt (was wiederum dazu führt, dass im generierten Paket nicht instrumentierte Klassen enthalten sind).

Zwischen der Verwaltung und dem Reporting führen Sie Ihre Tests (sei es UTs, ITs) nach Wunsch aus (im Gegensatz zu maven-cobertura-plugin, qualinsight-mojo-cobertura führt keine Tests aus). Weitere Informationen finden Sie auf der Projektseite (insbesondere an den Maven-Phasen, an die das Plugin standardmäßig gebunden ist.)