# coverage-report

Kein eigener Code (`packaging: pom`) - fasst die pro Modul bereits laufenden JaCoCo-Läufe zu
EINER reactor-weiten Coverage-Zahl zusammen und lässt `mvn verify` fehlschlagen, wenn diese unter
eine Mindestschwelle fällt (siehe [teststrategie.md](../../documentation/docs/03-testing/teststrategie.md#coverage)).
Hängt per normaler Maven-`<dependency>` von ALLEN 15 anderen Modulen ab (analog zu
`architecture-tests`' Begründung für explizite Versionen bei den Fachservices/
Infrastruktur-Services) und muss deshalb als LETZTES Modul im Reactor bauen.

## Warum nicht einfach `jacoco:report-aggregate`+`jacoco:check`?

`jacoco:check` (anders als `report-aggregate`) kennt Reactor-Abhängigkeiten nicht - es korreliert
immer nur gegen die Klassen DIESES Moduls. Workaround: `maven-dependency-plugin:unpack-dependencies`
entpackt vor dem Check-Schritt alle Abhängigkeiten (dünne Jars mit Klassen an der Jar-Wurzel, siehe
den `exec`-Classifier-Kommentar in der Root-`pom.xml`) nach `target/classes` dieses Moduls - danach
hat `jacoco:check` etwas, gegen das es die gemergte Execution-Datei prüfen kann.

## Ausführen

```bash
mvn -pl coverage-report -am verify
```

Report danach unter `target/site/jacoco-aggregate/index.html`.

## Weiterführend

- [teststrategie.md](../../documentation/docs/03-testing/teststrategie.md) - Abschnitt "Coverage"
- [architecture-tests/README.md](../architecture-tests/README.md) - dasselbe "hängt von allen
  Fachservices ab"-Muster, dort für ArchUnit statt Coverage
