2016-04-08 14 views
0

aufgeführt Ich habe zwei clover.db-Dateien; Diese clover.db-Dateien wurden zu zwei verschiedenen Zeiten erstellt. aber der zugrundeliegende (instrumentierte) Code änderte sich überhaupt nicht; Ich habe es gerade zweimal zusammengestellt; erstellte zwei separate WAR-Dateien; und kopierte diese beiden separaten WAR-Dateien und clover.db auf zwei separate Server.Wenn ich versuche, einen Klee zu machen: fusionieren; die resultierende Kleeblattabdeckung wird bei 0%

Nach dem Ausführen verschiedener Tests für beide dieser bereitgestellten Server; und sammelte die clover.db * -Dateien.

Ich rannte Maven mit mvn clover2:aggregate clover2:clover <options> und bekam beide Sätze von Cover Coverage-Dateien für jeden separaten Server generiert. Sie führen zu einigen% der Abdeckung (in diesem Fall 14% und 19%)

Nun möchte ich diese beiden in einem Bericht zusammenzufassen; aber ich kann mir nicht vorstellen, wie ich das machen soll; So wie ich es versuche (unten aufgeführt), habe ich entweder 0% Abdeckung oder die Abdeckung von einem einzelnen Server (Code Metrics für Klee ist korrekt ausgefüllt).

Hier die verschiedenen Möglichkeiten, wie ich versucht habe und das Ergebnis:

1) Kopieren clover.db von einem Server und die clover.db* Dateien von beiden Servern und mvn clover2:aggregate clover2:clover <options> läuft. Dies führt dazu, dass nur die Abdeckung von einem der beiden Server angezeigt wird (je nachdem, welcher der ursprünglichen clover.db gehört).

2) Kopieren Sie clover.db von beiden Servern an einen einzigen Ort (benennen Sie die .db-Datei in etwas Ungewöhnliches um). Running mvn clover2:aggregate clover2:merge <options>. Dies führt zu einer zusammengeführten .db-Datei (von dem, was ich sagen kann). Ich verwende dann diese zusammengelegte .db-Datei als clover.db Datei; Kopieren Sie in die clover.db* Dateien von beiden Servern, und führen Sie mvn clover2:aggregate clover2:clover <options>. Ich verwende den folgenden in der pom.xml Datei diese merge, um anzuzeigen:

<cloverMergeDatabase>/tmp/clover/Merged/newMerge.db</cloverMergeDatabase> 
<baseDir>/tmp/clover/Merged</baseDir> 

Danach, kopiere ich die neu newMerge.db an den Ort creted wo mvn die clover.db Datei erwartet werden (und benennen Sie sie in clover.db denn das ist, was erwartet mvn). Dies ist, wenn ich den Aggregatbefehl ausführen. Dies führt dazu, dass eine Abdeckung von 0% angezeigt wird (die Dateien werden generiert, aber absolut keine Abdeckung angezeigt).

Wie Sie an den angehängten Bildern sehen können, werden die Dateien korrekt erstellt, es findet gerade keine Abdeckung. Das erste Bild ist, wenn ich # 1:

Result from #1

Und das zweite ist, wenn ich # 2:

Result from #2

Hoffentlich habe ich erklärt, die Frage, die ich bin vor; Aber bitte, wenn Sie denken, dass Sie helfen können, aber etwas nicht verstehen, habe ich gesagt, Fragen stellen. Das ärgert mich!

Antwort

1

Merge am ersten Punkt sucht nach Clover-Datenbanken. Dann sucht es nach Coverage-Dateien, die mit der Datenbank übereinstimmen, und es stimmt mit dem Dateinamen der Datenbank mit dem Namen der Coverage-Datei überein. Wenn z. B. db den Namen clover.db hat, wird es alle Coverage-Dateien finden, die mit diesem Namen übereinstimmen, wie clover.db * (oder analog cloverdatabase ->cloverdatabase * < - Berichterstattung Dateien)

Im ersten Schritt Clover höchstwahrscheinlich alle Abdeckung Dateien findet, aber die von dem zweiten Server kopiert entspricht nicht clover.db , so werden verworfen. (Clover speichert Informationen über Instrumentierungs- und Testausführungssitzungen. Einige der Metadaten müssen übereinstimmen)

In Schritt zwei beim Umbenennen der zweiten Datenbank werden alle Coverage-Dateien mit der ersten verglichen (seit Namenskonflikten) und dann die Hälfte davon verworfen, weil die Metadaten nicht übereinstimmen (der gleiche Mechanismus wie in Schritt 1). Und da Sie die zweite DB umbenannt haben, findet Clover keine Coverage-Dateien für diese DB.

Ich kann hier nicht 100% sein, aber es reicht vielleicht nicht aus, nur Dateien umzubenennen Sie können Dateien nicht einfach umbenennen.

Ich würde vorschlagen, Datenbanken mit eindeutigen Namen z. B. cloverWAR1.db, cloverWAR2.db zu generieren. Führen Sie dann Tests aus, kopieren Sie dbs in den Berichtscomputer für die Aggregation und Berichterstellung. Sie sollten cloverDatabase Eigenschaft, like this verwenden. Während der Testlaufzeit müssen Sie wahrscheinlich die Position von db mit einer initstring Eigenschaft angeben. Das liegt daran, dass es kein Standardname ist und Clover es nicht automatisch finden kann.