# language: de Funktionalität: Komplexität und Mutanten derselben Methode verbinden Als Entwickler möchte ich verlässliche Methodenwerte, auch bei Überladungen oder fehlenden Quelltextinformationen. @MC-008 Szenario: Komplexität ohne zusätzlichen Coverage-Lauf ermitteln Angenommen ein Java-Fixture enthält eine Methode mit einer einfachen if-Verzweigung Und die originale Class-Datei liegt vor Und es gibt weder eine JaCoCo-exec-Datei noch einen für diese Auswertung aktiven JaCoCo-Agenten Wenn das Plugin die Klasse statisch analysiert Dann wird für diese Methode die JaCoCo-Gesamtkomplexität 2 ermittelt Und dafür wird kein Test gestartet Und es wird nicht versehentlich die abgedeckte Komplexität 0 verwendet @MC-009 Szenario: Fehlende Debuginformationen verhindern den Join nicht Angenommen dasselbe kleine Java-Fixture wird mit und ohne Debuginformationen kompiliert Und für beide Varianten liegen passende Mutationsergebnisse vor Wenn beide Varianten jeweils ausgewertet werden Dann werden die Mutanten jeweils der korrekten JVM-Methode zugeordnet Und die Methode hat in beiden Varianten dieselbe Gesamtkomplexität Und fehlende Quelltextzeilen werden als nicht verfügbar dargestellt @MC-010 Szenario: Überladene Methoden bleiben getrennt Angenommen eine Klasse besitzt die Methoden "calculate(I)I" und "calculate(Ljava/lang/String;)I" Und für beide Methoden liegen verschiedene Komplexitäten und Mutationsergebnisse vor Wenn der Report erstellt wird Dann enthält er zwei getrennte Methodenidentitäten Und jede Methode verwendet nur ihre eigene Komplexität und ihre eigenen Mutanten @MC-011 Szenario: Fehlender Originalbytecode wird nicht durch einen Fantasiewert ersetzt Angenommen ein Mutationsergebnis verweist auf eine Methode Und deren Originalklasse kann nicht zuverlässig gelesen werden Wenn die Analyse abgeschlossen wird Dann wird der betroffene Eintrag als "COMPLEXITY_UNAVAILABLE" ausgewiesen Und kein Komplexitätswert wird aus Namen oder Mutantenzahl geschätzt Und ein aktiviertes striktes Gate scheitert mit einem Analysefehler @MC-012 Szenario: Eine Klasse ohne Ergebnis-Callback bleibt im Inventar sichtbar Angenommen eine Produktionsklasse gehört zum ausdrücklich ausgewählten Analysescope Und ihre ausführbaren Methoden können statisch analysiert werden Und PIT liefert für diese Klasse keine Mutationsergebnisse Wenn das Plugin den ausgewählten Scope vollständig inventarisiert Dann erscheinen ihre Methoden mit Zustand "NO_MUTATION_RESULTS" Und sie werden nicht als erfolgreich mutationsgetestet gezählt @MC-013 Szenario: Reporting-Ausschlüsse verändern PIT nicht Angenommen eine Methode ist durch eine ausdrückliche Reporting-Regel ausgeschlossen Und PIT hat für diese Methode Mutationsergebnisse erzeugt Wenn das Plugin den Report erstellt Dann sind Ausschluss und angewendete Regel nachvollziehbar Und diese Methode nimmt nicht am Score-Gate teil Und die ursprünglichen PIT-Ergebnisse werden weder verändert noch entfernt