52 lines
2.4 KiB
Gherkin
52 lines
2.4 KiB
Gherkin
# language: de
|
|
@optional-kotlin
|
|
Funktionalität: Kotlin-JVM-Methoden ohne falsche Quelltextzusammenfassung auswerten
|
|
Als Kotlin-Nutzer möchte ich erkennen, welche tatsächlich erzeugten JVM-Methoden
|
|
mit der dokumentierten Compiler- und PIT-Kombination ausgewertet werden können.
|
|
Die IDs der Spezifikation, MC-032 und MC-033, sind schon vergeben; daher MC-KT (ADR 0009).
|
|
|
|
@MC-KT-001
|
|
Szenario: Gewöhnliche Kotlin-Methoden mit Verzweigungen auswerten
|
|
… damit Kotlin-Code dieselbe Auswertung bekommt wie Java-Code.
|
|
|
|
Angenommen ein Kotlin-Projekt mit einer Methode mit when und zwei Überladungen von total
|
|
Wenn PIT mit werkcrappit läuft
|
|
Dann hat jede dieser Methoden einen Mutation-CRAP-Wert
|
|
Und die beiden Überladungen werden getrennt bewertet
|
|
|
|
@MC-KT-002
|
|
Szenario: Ein Lambda ist eine eigene Methode
|
|
… damit Methoden nicht wegen gemeinsamer Quelltextzeilen vereinigt werden.
|
|
|
|
Angenommen eine Funktion byDistance gibt ein Lambda mit Verzweigungen zurück
|
|
Wenn PIT mit werkcrappit läuft
|
|
Dann hat das Lambda einen eigenen Wert mit seiner eigenen Komplexität
|
|
Und byDistance zählt nur seinen eigenen Code
|
|
|
|
@MC-KT-003
|
|
Szenario: Vom Compiler erzeugte Methoden tragen einen Grund statt eines Werts
|
|
… damit kein erfundener Wert entsteht.
|
|
|
|
Angenommen eine Data Class mit einem Vergleich und eine Funktion mit Default-Argument
|
|
Wenn PIT mit werkcrappit läuft
|
|
Dann sind equals, die Bridge-Methode und copy$default mit dem Filter von JaCoCo als Grund ausgeschlossen
|
|
Und die Hilfsmethode für das Default-Argument hat keinen Wert, weil PIT sie nicht mutiert
|
|
|
|
@MC-KT-004
|
|
Szenario: Der Rumpf einer Inline-Funktion bleibt ohne Abdeckung
|
|
… damit man ihren Wert nicht als Aussage über ihre Tests liest.
|
|
|
|
Angenommen eine Inline-Funktion guarded, die nur über guardedPositive aufgerufen wird
|
|
Wenn PIT mit werkcrappit läuft
|
|
Dann sind alle Mutanten von guarded selbst ohne Abdeckung
|
|
Und guardedPositive hat einen eigenen Wert
|
|
|
|
@MC-KT-005
|
|
Szenario: Die Zustandsmaschine einer Suspend-Funktion senkt ihren Mutation Score
|
|
… damit man den höheren Wert einer Suspend-Funktion richtig einordnet.
|
|
|
|
Angenommen eine Suspend-Funktion afterPause mit einem Unterbrechungspunkt
|
|
Wenn PIT mit werkcrappit läuft
|
|
Dann hat afterPause die Komplexität ihrer eigenen Verzweigung
|
|
Und einige Mutanten der Zustandsmaschine bleiben ohne Abdeckung
|