Pitest (auch bekannt als PIT) ist ein hochmodernes Mutationstestsystem für Java und die JVM.
Lesen Sie alles darüber unter https://pitest.org
Veröffentlichungen
1.17.2
- #1362 Lambdas in durch Annotation ausgeschlossenen Methoden ausschließen (danke @see-quick)
1.17.1
- #1353 Warnung vor zukünftiger Entfernung des SCM-Ziels
- #1355 ASM für Java 24-Unterstützung aktualisieren
- #1359 Verwendung des auf Reflexion basierenden toString-Generators entfernt
- #1361 Erste Unterstützung für modulübergreifende Tests in Maven
1.17.0
- #1348 Transformationserweiterungspunkt erweitern
- #1349 Powermock-Stabilität verbessern
1.16.3
- #1345 Verbesserte Erkennung verzögerter Ausführung im statischen Initialisierungscode
- #1347 Standard-Kotlin-Quellverzeichnisse für Maven-Projekte automatisch hinzufügen
1.16.2
- #1340 Abdeckende Tests für überlebende Mutanten im HTML-Bericht anzeigen (danke @vivganes)
- #1342/#1343 Irreführende Protokollierung von Verlaufspfaden behoben (danke @vivganes)
- #1344 Verzögerter Ausführungscode in Enumerationen und Singletons mutiert
1.16.1
- #1329 Verhindert Versionskonflikte mit dem Gesamtziel, wenn Plugins Jackson verwenden
1.16.0
- #1311 – Beziehen Sie nicht veränderbare Sammlungen ein, die direkt in Feldern im
+funmodifiablecollection
-Filter für defensiven Code gespeichert sind - #1319 – Umgebungsvariablen aus der Surefire-Konfiguration verwenden
- #1322 – -ea automatisch hinzufügen, um Behauptungen zu aktivieren
- #1321 – BuildVerifier-Schnittstelle erweitern
Die API-Änderung in #1321 ist abwärtskompatibel, aber Plugins, die für 1.16.0 geschrieben wurden, funktionieren möglicherweise nicht mit früheren Versionen.
1.15.8
- #1310 Filtermutationen zu Collections.unmodifiable*
- #1309 Felder in argLines ersetzen, die aus der Surefire-Konfiguration importiert wurden
- #1308 Bump Maven VCS-Versionen
Die Filterung für #1310 ist standardmäßig deaktiviert. Um es zu aktivieren, fügen Sie die Filterzeichenfolge +funmodifiablecollection
hinzu.
1309 fügt eine neue Maven-Eigenschaft parseSurefireArgLine
hinzu. Dies ist standardmäßig auf „true“ gesetzt, aber das todsichere Argline-Parsing kann jetzt deaktiviert werden, indem es auf „false“ gesetzt wird.
1.15.7
#1305 Abdeckung für Code im Paketnamen com.sun* nicht erfasst
Einem Filter zur Erfassung älterer JDK-Klassen im Paket „com.sun.*“ fehlte ein '
, was dazu führte, dass keine Codeabdeckung registriert wurde, wenn sich der zu testende Code zufällig in einem Paket befand, das mit „sun“ begann.
1.15.6
- #1295 Dynamische Anrufverfolgung vorübergehend entfernen
Die dynamische Aufrufverfolgung für statischen Initialisierungscode wird wieder eingeführt, wenn zusätzliche Logik zur Unterdrückung der Mutationsfilterung für Code mit verzögerter Ausführung implementiert wurde.
1.15.5
- #1292 Arg-Zeilen aus der Surefire-Konfiguration haben keine ersetzten Eigenschaften
1.15.4
- #1288 – Neuer Erweiterungspunkt, um benutzerdefinierte Coverage-Exportformate zu ermöglichen
- #1289 – Argline-Konfiguration aus todsicherer Konfiguration analysieren
- #1274 Befolgen Sie dynamische Aufrufe beim Erkennen statischer Initialisierungsmethoden
Beachten Sie, dass Maven-Benutzer, die zuvor Argline-Parameter zwischen jvmArgs
und argline
Parametern von Surefire und Pitest duplizieren mussten, beim Upgrade möglicherweise ihre Konfiguration anpassen müssen. An Surefire übermittelte Einträge werden nun automatisch zu Pitest hinzugefügt.
1.15.3
- #1271 – Überprüfen Sie den Thread-Status noch einmal, bevor Sie Minion als tot markieren
1.15.2
- #1268 – Lombok NonNull-Prüfungen filtern
- #1267 – Test-API erweitern, um die Meldung von Fehlern während des Testscans zu ermöglichen
#1267 stellt sicher, dass zuvor versteckte Fehler, die das JUnit5-Plugin entdeckt hat, jetzt gemeldet werden. Dies ist eine abwärtskompatible API-Änderung. Es hat keine Auswirkungen, bis das JUnit5-Plugin aktualisiert wird, um die erweiterte API zu verwenden. Das aktualisierte Plugin ist nicht mit früheren Versionen von pitest kompatibel.
1.15.1
- #1260 Upgrade auf ASM 9.6 für Java 22-Unterstützung
- #1261 Kein Fehler bei Pitest-Verlaufsdateien < 1.15.0
1.15.0
- #1253 Abdeckungsstatistiken unterdrücken, wenn die Reduzierung des Verlaufstests aktiviert ist
- #1252 Extrafeatures-Parameter für Maven hinzufügen, um das Hinzufügen von Features auf der Befehlszeile zu ermöglichen, ohne die vorhandene Liste zu überschreiben
- #1251 Verlaufsschnittstellen erweitern (bahnbrechende Änderung)
- #1250 Fehlermeldung verbessert, wenn das Parsen von Feature-Strings fehlschlägt
- #1248 Leistungsoptimierung – Testklassenidentifizierung verzögern
- #1247 Entfernung des alten Codes
Aufgrund der bahnbrechenden API-Änderungen in #1251 sollte das Arcmutate-Kotlin-Plugin beim Upgrade auf Pitest 1.15.0 auf 1.1.0 aktualisiert werden
1.14.4
#1246 Priorisieren Sie den vorherigen Tötungstest, wenn Sie Verlaufsdateien verwenden
1.14.3
- #1239 Unterstützt durch Kommas getrennte ausgeschlossene Gruppen (danke @johnathana)
- #1243 Ordnen Sie den Klassenpfad explizit in der Verlaufsdatei, um die Konsistenz zwischen den Läufen sicherzustellen
- #1245 Verhindern Sie eine verwirrende Protokollierung von Dummy-Inkrementalanalyseläufen
1.14.2
- #1221 – Einheitliche Prozentberechnung (danke @Vampire)
- #1218 – Thread-Sicherheit für die Ergebniserfassung, wenn Tests parallel laufen (danke @Vampire)
- #1225 – Fehler verhindern, wenn Nicht-Archivdateien im Klassenpfad enthalten sind
- #1229 – Iterables in emptyList mutieren
- #1227/1232 – Die MethodMutator-Schnittstelle wurde so korrigiert, dass sie von abstrakten Typen abhängt
1.14.1
- #1215 Beim Zusammenfassen von Berichten werden Abdeckungsumschreibungen angewendet
- #1219 Stellen Sie sicher, dass Sie es zuerst mit der Ressourcenfilterung versuchen (danke @Vampire)
1.14.0
- #1213 Filteräquivalent dividiert durch -1 Mathe-Mutanten
- #1212 Junit-Plattform-Launcher automatisch hinzufügen
#1212 Behebt weitgehend das Problem, die pitest-junit5-plugin-Version für Maven-Benutzer mit der junit5-Version synchron zu halten.
Bei Verwendung mit 1.2.0 des pitest-junit5-plugin wählt pitest nun automatisch eine Version von junit-platform-launcher aus, die mit der vom zu testenden System verwendeten Version von junit5 kompatibel ist.
Es bestehen weiterhin Probleme für Gradle-Benutzer, die möglicherweise immer noch auf API-Kompatibilitäten stoßen, wenn sie 1.2.0 des pitest-junit5-plugins verwenden. Diese können jedoch jetzt behoben werden, indem manuell die richtige Version von junit-platform-launcher zum Klassenpfad hinzugefügt wird.
Es besteht die Hoffnung, dass eine zukünftige Version des pitest-Gradle-Plugins einen Fix implementiert, der der pitest-maven-Lösung ähnelt.
1.13.2
- #638 Stellen Sie sicher, dass % als 100 angezeigt wird, wenn alle Mutanten getötet wurden (danke @Vampire)
- #1197 Startinformationen anzeigen, wenn die Protokollierung auf VERBOSE_NO_SPINNER eingestellt ist (danke @Vampire)
- #1198 Protokollierungsverbesserungen (danke @Vampire)
- #1200 Warnung, wenn parallele Testausführung während der Coverage-Erfassung aktiviert ist (danke @Vampire)
- #1199 Wechseln Sie zu System.nanoTime für Test-Timings (danke @Vampire)
- #1207 Unterstützung für das Entfernen von Anmerkungen auf Klassenebene
1.13.1
- #1194 Unterstützung
**.
Muster in Kugeln (danke @Pfoerd)
1.13.0
- #1188 Erlauben Sie Mutatoren, mehrere unterschiedliche Mutationen zu erzeugen
- #1190 Testpriorisierung für Abfangjäger bereitstellen
- #1191 Mutation von Anmerkungen zu Methoden und Feldern aktivieren
1.12.0
- #1186 Neue Erweiterungspunkte
1.11.7
- #1178 Kommas beim Töten von Testnamen unterbrechen CSV-Export (danke @Bonajo)
- #1177 Wenden Sie Funktionen in einer konsistenten Reihenfolge an
- #1176 Upgrade auf ASM 9.5
1.11.6
- #1171 Doppelte Instanziierung von Features verhindern
- #1170 Links zu https aktualisieren (danke @romani)
1.11.5
- #1167 Behebung der schlechten Leistung der statischen Analyse bei großen Methoden
- #1166 Pitest-Weblink auf https aktualisieren (danke @romani)
1.11.4
- #1161 Verhindern Sie doppelte Kliniten, wenn synthetische Kliniten vorhanden sind
- #1162 Kotlin-Quellverzeichnisse automatisch zum Maven hinzufügen, wenn vorhanden
1.11.3
- #1159 Berücksichtigen Sie nur mutierte Klassen in den Linienabdeckungsstatistiken
1.11.2
- #1157 Nur Zielcodezeilen melden
Die auf der Konsole gemeldeten Zeilenabdeckungsstatistiken umfassten Codezeilen für das gesamte Projekt, selbst wenn Filter angewendet wurden. Dies führte zu dramatisch niedrigen Abdeckungswerten.
1.11.1
- #1156 Verhindert, dass synthetische Leitungen in der Abdeckung gezählt werden
1.11.0
- #1138 Mutieren Sie redundante Fall-Through-Fälle nicht zu Standard-Switch-Fällen
- #1150 Neue Erweiterungspunkte
Beachten Sie, dass #1150 wichtige Schnittstellenänderungen enthält, die möglicherweise Aktualisierungen von Plugins von Drittanbietern erfordern.
1.10.4
- #1134 Parameter
excludedRunners
zur Befehlszeilenschnittstelle und Ant hinzugefügt - #1131 Unterstützt die todsichere späte Eigenschaftsauswertungssyntax für Arglines
1.10.3
- #1128 Fehlerbehebung – Zeilen mit wiederholten Debug-Einträgen werden doppelt gezählt
1.10.2
- #1125 Fehlerbehebung – Synthetische Lambda-Methoden werden nicht als Codezeilen behandelt
1.10.1
- #1124 Behebung des in 1.10.0 eingeführten Fehlers, bei dem Bridge-Methoden als gültige Codezeilen behandelt wurden
1.10.0
- #1067 Verbesserte Quarkus- und Roboelectric-Unterstützung
- #1116 Option zum Ausschließen der Zeilen 0 und 1 aller Klassen
- #1118 Fehlende Plugins erkennen
Aufgrund von #1067 ist es wichtig, dass Mutationen für jede JVM nur für eine einzelne Klasse erstellt werden. Der MutationGrouper
Erweiterungspunkt wurde daher entfernt, da dadurch diese Einschränkung verletzt werden konnte. Alle Plugins von Drittanbietern, die diese Erweiterung verwenden, werden nicht mehr unterstützt.
Releases beinhalten auch mehrere Änderungen an internen Datenstrukturen. Alle Plugins von Drittanbietern, die auf diesen Strukturen basieren, müssen möglicherweise aktualisiert werden.
1116 bietet eine grobe Möglichkeit, automatisch generierten Code auszuschließen, der nicht von den anderen Filtern von pitest erfasst wird. Es ist standardmäßig deaktiviert, da es in manchen Situationen Code ausschließen kann, der für die Mutation gültig ist, kann aber durch Hinzufügen der Feature-Zeichenfolge +nofirstline
aktiviert werden.
1.9.11
- #1105 Aggregator löst falsche Datei für Kotlin-Dateien außerhalb des Pakets mit demselben Namen auf
- #1111 Log-Tippfehler behoben (Danke @wangbo15)
1.9.10
- #1106 Ersetzen Sie Map.of nicht durch Collections.emptyMap
- #1109 Debug-Prüfung der Quelldatei lockern
1.9.9
- #1098 Fallwerte in Switch-Mutationsbeschreibungen einbeziehen
1.9.8
- #1094 Suche nach Quelldateien außerhalb von Paketverzeichnissen
Fügt Unterstützung für Sprachen wie Kotlin hinzu, bei denen sich Quelldateien möglicherweise nicht in einer Verzeichnisstruktur befinden, die ihrem Paket entspricht. Beachten Sie, dass pitest nicht garantieren kann, die richtige Datei aufzulösen, wenn derselbe Dateiname an mehr als einem Ort vorkommt.
1.9.7
- #1091 – Escape-Klassennamen im Coverage-XML
1.9.6
- #1092 – Upgrade auf ASM 9.4
- #1091 – Coverage-XML ordnungsgemäß maskieren
- #1088 – Nicht verwendeten Abhängigkeitsdistanzparameter entfernen
- #1085 – Standardmäßig werden keine Zeitstempelberichte erstellt
Beachten Sie, dass #1085 das Standardverhalten ändert, sodass Berichte nicht mehr standardmäßig in Verzeichnisse mit Zeitstempel geschrieben werden. Wenn Sie dieses Verhalten benötigen, müssen Sie es explizit aktivieren.
1.9.5
- #1078 – Config Updater-Schnittstelle ändern
- #1079 – JBoss-Protokollierung standardmäßig vermeiden
1078 ist eine bahnbrechende Schnittstellenänderung, die jedoch in einer Zwischenversion enthalten ist, da davon ausgegangen wird, dass es derzeit keine externen Clients gibt.
1.9.4
- #1063 – Filterung äquivalenter Rückkehrmutanten verbessern
- #1064 – Entfernen Sie alte Rückgabewert-Mutatoren und die alte Standardgruppe
- #1066 – Statische Initialisierungsfilterung erweitern
- #1070 – Jacoco-Agent entfernen, falls auf Argline vorhanden
1.9.3
- #1052 – Unterstützt die Maven-ArgLine-Eigenschaft und einzelne String-ArgLines
- #1054 – Bietet Kontrolle über das automatische Hinzufügen von -Djava.awt.headless=true
- #1055 – Option zum automatischen Festlegen der Anzahl von Threads
- #1056 – Timeout für Socket-Kommunikation festlegen
- #1058 – Standardwerte für die Eingabe- und Ausgabekodierung für die programmgesteuerte API festlegen
1054 Verschiebt die Unterstützung des automatischen Hinzufügens von headless=true (um zu verhindern, dass der Tastaturfokus auf Macs gestohlen wird) in eine Funktion. Es ist standardmäßig aktiviert, kann jedoch durch Hinzufügen von -MACOS_FOCUS
zur Funktionszeichenfolge deaktiviert werden.
1055 fügt die Option hinzu, die entsprechende Anzahl von Threads für die aktuelle Maschine zu erraten, indem +auto_threads
zur Funktionszeichenfolge hinzugefügt wird. Diese Option ist standardmäßig deaktiviert und für die lokale Verwendung vorgesehen. Die Verwendung auf einem CI-Server wird nicht empfohlen.
1.9.2
- #1050 – Überprüfen Sie, ob die Minions am Leben sind, um Prozessabstürze zu verhindern
1.9.1
- #1047 Abhilfe für zeitweilige Prozessabstürze
1.9.0
- #1035 – Abdeckung des Speicherverbrauchs verbessern
- #1038 – Unterstützt Maven Site Plugin 3.12.0+ (danke IOs)
- #1040 – Schnellere JUnit 5-Abdeckungsberechnung
- #1040 –
dependencyDistance
-Parameter entfernen
Aufgrund von #1040 müssen alle externen Pitest-Test-Plugins (z. B. JUnit 5, TestNG, Arcmutate Accelerator) beim Upgrade auf eine kompatible Version (1.0.0) aktualisiert werden.
Verlaufsdateien aus früheren Versionen sind inkompatibel und sollten beim Upgrade gelöscht werden.
Ältere Versionen
1.8.1
- #637 – Unterstützt verschiedene Eingabe- und Ausgabekodierungen (danke @qxo)
- #705 – + in Dateipfaden zulassen (danke @ali-ghanbari)
- #903 – Mutanten in Singleton-Konstruktoren filtern
- #1025 – String-Switch-Filterung überarbeiten
- #1027 – Überarbeiten Sie die Assert-Filterung und entfernen Sie den alten Filtermechanismus
- #1030 – Enum-Switch-Junk-Mutationen filtern
1.8.0
- #1017 – Statische Endlosschleifenerkennung verbessern
- #1020 – Überarbeiten Sie die NFA-Matching-Bibliothek und versuchen Sie es mit Ressourcenfilterung
- #1022 – Quarkus-Test unterstützen
1.7.6
- #1008 Aktualisieren Sie ASM für die anfängliche Java 19-Unterstützung
- #1016 Fehlerhafter Fehler, wenn kein funktionierendes Test-Plugin bereitgestellt wird
- #1015 TestNG-Unterstützung aus der Hauptcodebasis entfernen
Aufgrund von #1015 muss das TestNG-Plugin nun konfiguriert werden, wenn pitest in von TestNG getesteten Codebasen verwendet wird. In früheren Versionen war die Unterstützung automatisch enthalten.
1.7.5
- #625 / #983 Berichtsaggregation korrigiert (danke @therealryan und @aurelien-baudet)
- #985 Handle leer, todsicherer Ausschluss
- #993 RV-Mutatoren in externes Plugin verschieben
- #994 / #995 Filtern Sie äquivalente Boxen und geben Sie echte Mutanten in Try-Blöcken zurück
- #968/997 Verbesserung der Filterung äquivalenter leerer Return-Mutanten
- #999/1003 Neuer Parameter zum Auffinden des Stammverzeichnisses von Projekten mit mehreren Modulen
Aufgrund von #993 muss jeder, der die forschungsorientierten RV-Operatoren nutzen möchte, das pitest-rv-Plugin konfigurieren, diese Mutatoren werden jedoch nicht für den allgemeinen Gebrauch empfohlen.
1.7.4
- #965 – BigDecimal Mutator (danke @MarcinNowak-codes)
- #750 – Unterstützung von -DskipTests über die Befehlszeile (danke @marwin1991)
1.7.3
- #952 Mutate-Map kehrt zu
emptyMap
statt zu null zurück - #954 Mutatoren ausschließen lassen
- #957 Äquivalente Mutationen nach Boolean.TRUE und Boolean.FALSE filtern
1.7.2
- #943 Standardmutatoren ändern – Bedingung negieren durch Bedingung entfernen ersetzen
- #946 Der Mutate-Stream kehrt zum leeren Stream anstelle von Null zurück
1.7.1
- #932 Beschreibungen von Switch-Mutationen verbessern
- #934 Konfigurieren Sie die Ausführlichkeit der Konsolenausgabe
- #940 Interne Funktionen ausblenden
- #942 Korrektur für Mutationsoperatoren von Drittanbietern, die nicht zum Client-Klassenpfad hinzugefügt wurden
- #939 Caching des Bytecode-Abrufs verbessern
1.7.0
- #923 Interne Schnittstellenänderungen
- #930 Steckbare Mutatoren
Aufgrund interner Änderungen sind einige Plugins von Drittanbietern möglicherweise nicht mit dieser Version kompatibel.
Vor dem Upgrade sollten alle Verlaufsdateien gelöscht werden.
Die Namen der Mutatoren zum Entfernen von Bedingungen haben sich aufgrund von #930 leicht geändert und müssen möglicherweise in Build-Skripten aktualisiert werden, wenn sie explizit aktiviert werden.
1.6.9
- #922 Filtern Sie äquivalente stream.empty-Mutanten in FlatMap-Aufrufen
- #921 Garantierte Reihenfolge der Mutationsoperatoren
- #919 Junk-Mutationen in Java-Datensätzen filtern
1.6.8
- #917 – Methode zum Abrufen aller Mutator-IDs für Pitclipse und andere Tools hinzugefügt
- #913 – ASM auf 9.2 aktualisieren
1.6.7
- #897 Beschreibung beim Ersetzen des Werts durch einen leeren Satz korrigiert
- #900 Unterstützt mehrere Test-Engines
- #822 Regression von NPE beim Lesen des Klassenpfadmanifests behoben
- #798 Regression der jvmArgs-Parameterunterstützung über Maven behoben
- #797 Regression der Leitungsabdeckung auf der Konsole behoben
Aufgrund von #900 ist der testPlugin
Parameter nun nicht mehr gültig, aber pitest wird ihn für diese Version weiterhin ohne Fehler akzeptieren. Pitest verwendet alle im Klassenpfad bereitgestellten Test-Engines und greift auf die integrierte JUnit4-Unterstützung zurück, wenn andere Test-Engines die Klasse nicht verarbeiten können.
1.6.6
- #891 – Verlaufsleistung korrigiert
- #889 – Klassenpfad nicht nach Verlauf durchsuchen, wenn die Option nicht angegeben ist
- #887 – CSS für Zeitüberschreitungen und Speicherfehler behoben
- #888 – Entfernen Sie nicht mehr existierende maximale Mutanten pro Klassenperameter
- #890 – Den nicht mehr existierenden Parameter „mutate static initalizers“ entfernen
1.6.5
- #882 Vermeiden Sie die Durchführung von Tests, wenn keine Mutanten möglich sind
1.6.4
- #862 ASM für Java 16 aktualisieren
1.6.3
- #853 Die Funktionsprüfung ohne Berücksichtigung der Groß-/Kleinschreibung wurde behoben
- #855 Bereitstellung von Abdeckungsdaten für Abfangjäger
- #857 stderr/out-Daten zeilenweise übergeben (danke @kgeilmann)
- #858 Behebung, dass der Test nicht fehlschlägt, wenn maxSurviving 0 ist (danke @alexkoltz)
- #860 Junk-Mutationen im Versuch mit Ressourcen in Java 11+ behoben
1.6.2
- #770 und #746 NPE während der Berichterstattungsphase beheben (Danke @LaurentTho3)
- #849 Machen Sie bei Funktionsnamen die Groß-/Kleinschreibung unempfindlich
- #844 Feature-System erweitern, um mit Listenern zu arbeiten
- #842 Stellen Sie den Zuhörern Berichtsoptionen zur Verfügung
1.6.1
- Automatisieren Sie die Freigabe an Maven Central
- #774 Teststärkestatistik (danke @alex859)
- #798 Aktivieren Sie die Übergabe von JVM-Argumenten über die Befehlszeile (danke @yfrolov)
- #797 Leitungsabdeckung zur Konsole hinzufügen (danke @qxo)
- #822 NPE bei versehentlicher Abhängigkeit abmildern (danke @szpak)
1.5.2
- #749 ANT-Unterstützung für die Option fullMutationMatrix (danke @ayaankazerouni)
- #752, #755, #757 Versionsfehler und Verbesserungen des Legacy-Codes (Danke @AlexElin)
- #758 Richtig, für Testpakete (Danke @nicerloop)
- #765 Inkrementelle Analyse für TestNG behoben (danke @StefanPenndorf)
1.5.1
- #737 Flag „skipFailingTests“ zum Befehlszeilentool hinzugefügt (danke @szpak)
- #739 Tippfehler in der Fehlermeldung behoben (danke @vmellgre)
- #745 Fehlermeldung verbessern, wenn Junit nicht im Klassenpfad ist (danke @szpak)
- #748 ASM auf 8.0 aktualisieren, um Java 14-Unterstützung zu erhalten
1.5.0
- #556 – Enum-Konstruktoren nicht mutieren
- #726 – Stellen Sie sicher, dass die statische Initialisierungsabdeckung aufgezeichnet wird
- #734/#735/#736 – Legacy-Schnittstellen durch Java-API ersetzen (danke @AlexElin)
1.4.11
- #683 – Try-with-Ressourcen filtern, bevor Inline-Code gefiltert wird (danke @Vampire)
- #686 – Geben Sie den Klassennamen für nicht teilbare Testeinheiten nicht zweimal aus (danke @Vampire)
- #672 – Das aktuelle Verzeichnis nicht in den Minion-Klassenpfad einschließen (danke @Vampire)
- #692 – Property='skipPitest' hinzufügen, um das Attribut-Inn-Maven-Plugin zu überspringen (danke @cjgwhite)
- #697 – TestNG 7.0.0-Kompatibilität (danke @kris-scheibe)
- #666 – UOI4 meldet mutierten Feldnamen (danke @LaurentTho3)
- #716 – ASM auf 7.3.1 aktualisieren (erforderlich für Java 14)
- #710 – Standardmäßig den neuen Mutatorsatz verwenden
1.4.10
- #534 Kleinere Blöcke für präziseres Test-Targeting (danke @jon-bell)
- #664 A0D2-Kartenschlüssel reparieren (Danke @Vampire)
- #656 Escape-Zeichen in Init-Methoden für HTML-Bericht (danke @Vampire)
- #404 Filtern Sie Junk-Mutationen nach vom Compiler generierten Objects.requireNonNull-Aufrufen
1.4.9
- #613 / #623 – Behebung von Powermock-Problemen (danke @jon-bell)
- #614 – Verbesserte Fehlermeldung, wenn kein Test-Plugin vorhanden ist (danke @szpak)
- #620 – Unterstützt Anmerkungsprozessoren wie Micronaut, die keinen Debug-Dateinamen festlegen
1.4.8
- #597 Behebung eines Fehlers in der Abdeckung bei einer großen Anzahl von Klassen (danke @jon-bell)
- #601 Vermeiden Sie es, den Tastaturfokus auf MacOS zu stehlen (danke @maxgabut)
1.4.7
- #545 – Schnellere Deckungsberechnung (danke @jon-bell)
1.4.6
- #580 – Upgrade auf ASM 7.1
- #573 – Ant-Unterstützung für
testPlugin
und failWhenNoMutations
(danke @mduggan) - #555 – Leere Elemente in der Maven-Konfiguration zulassen (danke @maxgabut)
1.4.5
- #557 – Probleme bei der Ausführung unter Java 8
1.4.4
- #518 – Experimenteller BigInteger-Mutator (danke @ripdajacker)
- #513 – Mutatoren im HTML-Bericht sortieren (danke @ThLeu)
- #553 – Klassische Mutatoren aus der Literatur (danke @LaurentTho3)
- #528 – Option „skipFailingTests“ vom Maven-Plugin hinzugefügt (danke @nicerloop)
1.4.3
- #510 – Mutationstestmatrix berechnen (danke @nrainer)
- #519 – Java 11-Unterstützung
1.4.2
- #500 – Unterstützung für große Klassenpfade mit der neuen Option
useClasspathJar
(danke @jqhan)
1.4.1
- #446 – Leere Verzeichnisse beim Zusammenfassen von Berichten ignorieren (danke @maxgabut)
- #457 – Basisverzeichnis in Projekten mit mehreren Modulen korrigiert (danke @sarahBuisson und @giggluigg)
- #471 – Grundlegende Java 11-Unterstützung
- #477 – Null-Byte in XML (Danke @maxgabut)
- #480 – Aggregation von Berichten mit Zeitstempel zulassen (danke @maxgabut)
- #495 – Zusammenfassung an das Ende der Konsolenausgabe verschieben (danke @pedrorijo91)
- #499 – Korrektur für äquivalente Mutanten in neuen Rückgabewert-Mutatoren
1.4.0
- #445 – Erhöhen Sie die minimal unterstützte Java-Version auf 8
- Wechseln Sie zu ASM 6.1.1
- #448 Aggregierter Bericht basierend auf Modul (danke @sarahBuisson)
- #462 Escape-Testnamen in Coverage-XML (Danke @maxgabut)
1.3.2
- #433 – Berichte über Maven aggregieren (danke @rchargel)
- #438 – Filtertests auf Methodenebene (danke @ftrautsch)
- #439 – Primitives-Return-Mutator verarbeitet keine Bytes
- #380 – Entfernen Sie die Abhängigkeit von xstream für eine verbesserte Java 9-Unterstützung
- #414 – xstream-Verlaufsspeicher ersetzen (danke @kiftio)
Beachten Sie beim Upgrade, dass von früheren Versionen generierte Verlaufsdateien nicht mit 1.3.2 und höher kompatibel sind.
1.3.1
- #434 – XStream-Sicherheitswarnung
1.3.0
- #196 – Erhöhen Sie die minimale Java-Version auf 7
- #425 – Für jede Erkennung erweitern
- #428 – Parameter
excludedTestClasses
hinzufügen - #379 – Unterstützung für mutierende statische Initialisierer entfernt
- #432 – Export-Plugin-Funktionalität in pitest hinzufügen
- #427 – Bessere Rückgabewert-Mutatoren
- #429 – Test-API vereinfachen
428 ändert das bestehende Verhalten des „excludedClasses“-Filters. Bisher wurden Klassen dadurch sowohl von der Mutation als auch von der Ausführung als Tests ausgeschlossen, was für einige Benutzer bei einem Upgrade möglicherweise Änderungen erforderlich machen würde.
Dadurch werden 429 TestNG-Tests nicht mehr automatisch erkannt – der neue testPlugin
Parameter muss explizit auf „testng“ gesetzt werden.
1.2.5
- #407 – SCM-Ziel kann nicht aus dem Modul heraus ausgeführt werden (danke @sbuisson)
- #256 – Der Inline-Stil verstößt gegen die Inhaltssicherheitsrichtlinie (danke @kiftio)
- #403 – Kein CSS im von Jenkins angezeigten HTML-Bericht (danke @kiftio)
- #409 – Mutation basierend auf Änderungen in der Verzweigung (danke @sbuisson)
- #418 – For-Schleifeninkremente vermeiden
- #424 – Für jeden Code vermeiden
- #389 – Erweitern Sie den Abgleich impliziter Nullprüfungen
1.2.4
- #397 – Gründe melden, warum Maven-Module übersprungen wurden
- #389 – Filtert Junk-getClass-Null-Checks in Lambdas
- #400 – Update auf ASM 6.0
1.2.3
- Update auf ASM 6 für Java 9-Unterstützung
- #388 – Markieren Sie das Maven-Plugin als threadsicher
- #362 – Gemeinsame äquivalente Mutante in Equals-Methoden unterdrücken
1.2.2
- #367 – Die statische Analyse kann in einigen Projekten keine Kernklassen finden
1.2.1
- #347 – Vermeiden Sie automatisch generierten Code (z. B. von Lombok), der mit @Generated annotiert ist
- #285 – Vom Compiler generierte Bedingungen in der Einschaltzeichenfolge vermeiden. (Danke @Kwaq)
- #218 – Neuer „nackter Empfänger“/Methodenketten-Mutator. (Danke @UrsMetz)
- #354/#356 – Neuer Erweiterungspunkt plus Änderungen zur Reduzierung der Kosten für den Direktzugriff auf Bytecode für die statische Analyse
- #353 – Verbesserte Erkennung des statischen Initialisierungscodes
- #364 – Endlosschleifen mittels statischer Analyse filtern
- #365 – Konfigurationssystem für Plugins
(Hinweis Nr. 347 erkennt javax.annotaion.Generated
nicht , da es nur über die Quellspeicherung verfügt.)
1.2.0
- #318 – Hauptprozesscode vom Code-Sharing-Client-Klassenpfad trennen
- #295 – Abstrakte TestNG-Tests ignorieren
- #215 – Automatische Auswahl von Zielklassen für Maven
- #314 – Scheitern Sie nicht bei Maven-Modulen ohne Tests oder Code
- #306 – Nicht scheitern, wenn sich nur Schnittstellen im Änderungssatz befinden
- #325 – Anonyme Klasse im Spock-Test verursacht Fehler
- #334 – Kompatibilität mit aktuellen TestNG-Versionen
- #335 – Falsche Abdeckung mit Powermock
Hinweis: Ab dieser Version bestimmt das Maven-Plugin automatisch, welche Klassen mutiert werden sollen, anstatt davon auszugehen, dass die Paketnamen mit der Gruppen-ID übereinstimmen.
1.1.11
- #269 – Es ist nicht möglich, den Build auf einem Mutanten abzubrechen
- #271 – Methodendeskriptor in die Zeilenabdeckung einbeziehen
- #170 – Ausschluss durch JUnit-Läufer
- #291 – Handle leer schließt aus
- #287 – Überprüfen Sie die Klassenhierarchie auf Anmerkungen
- #289 – Option zur Bereitstellung des Klassenpfads aus der Datei
1.1.10
- #260 – Erste Unterstützung für mutierenden Kotlin-Code
- #264 – Unterstützung für Yatspec-Runner (danke @theangrydev)
- Brechen Sie den Build ab, wenn mehr als
maxSurviving
-Mutanten überleben
1.1.9
- #132 – Analyse nur der Dateien zulassen, die beim letzten Commit berührt wurden (danke Tomasz Luch)
1.1.8
- #239 – Stellen Sie eine Verknüpfung zum Festlegen von Verlaufsdateien über Maven bereit
- #240 – Unterstützung für reguläre Ausdrücke (danke sebi-hgdata)
- #243 – Verwenden Sie kurzlebige Ports, um mit Schergen zu kommunizieren
1.1.7
- #196 – Erhöhen Sie die minimale Java-Version auf 1.6
- #231 – Prozess hängt
1.1.6
- #10 – Maven-Berichtsziel hinzufügen (Danke, Jasonmfehr)
- #184 – Funktion zum Entfernen undokumentierter Projektdateien
- #219 – Leistungsverbesserung für die Berichtserstellung (danke Tobiasbaum)
- #190 – Benutzerdefinierte Eigenschaften für Plugins zulassen
Beachten Sie, dass diese Version ein bekanntes Problem enthält (Nr. 231). Bitte upgraden.
1.1.5
- Fix für #148 – Stackoverflow mit TestNG-Datenanbietern bei Verwendung von JMockit
- Fix für #56 – Junit-Inkompatibilitäten werden nicht gemeldet
- Fix für #174 – Ungültige linecoverage.xml mit statischen Initialisierern
- Fix für #183 – GWTMockito-Tests können nicht ausgeführt werden
- Fix für #179 – Defektes
includeLaunchClasspath=false
unter Windows - #173 – Ausschlüsse und Gruppen aus der Maven Surefire-Konfiguration lesen
1.1.4
- #157 – Support-Maven-DskipTests-Flag (danke lkwg82)
- Fix für #163 – Der Testbaum sollte nicht in den Abdeckungsschwellenwert einbezogen werden
- #166 – Klassenpfad-Ausschlüsse für Maven-Plugin zulassen (danke TomRK1089)
- #155 – Stellen Sie die Java 5-Kompatibilität wieder her
- Fix für #148 – Problem mit JMockit + TestNG (danke estekhin und KyleRogers)
1.1.3
- Fix für #158 – Tests wurden fälschlicherweise von Mutanten ausgeschlossen
- Fix für #153 – SCM-Plugin für Maven 2 defekt
- Fix für #152 – Funktioniert nicht mit IBM JDK
1.1.2
- Behebung von Nr. 150 – Leitungsabdeckung wird nicht ausreichend gemeldet
1.1.1
- Blockbasierte Abdeckung (Fixes 79/131)
- Ende der Unterstützung für die Ausführung unter Java 5 (Java 5-Bytecode wird weiterhin unterstützt)
- Skip-Flag für Maven-Module (#106)
- Hören Sie auf, TestNG als Abhängigkeit zu deklarieren
- Neuer Mutator zur Parameterausbreitung (danke UrsMetz)
1.1.0
- Änderungsschema zur Identifizierung von Mutanten (siehe Nr. 125)
- Unterstützt alternative Test-APIs über das Plugin-System
- Fehler melden, wenn der angegebene Mutatorname nicht übereinstimmt (danke artspb)
- Exit-Codes aus dem untergeordneten Coverage-Prozess melden (danke KyleRogers)
- Behandeln Sie JUnit-Tests mit ClassRule-Annotation als eine Einheit (danke devmop)
Bitte beachten Sie, dass alle gespeicherten Verlaufsdateien oder Sonarergebnisse durch diese Version ungültig werden.
1.0.0
- Versionsnummerierungsschema ändern
- Upgrade auf ASM 5.0.2
- Fix für #114 – Ausführung für Java 8 schlägt fehl, wenn das Flag „-parameters“ gesetzt ist
- #99 Unterstützt die Eigenschaft „additionalClasspathElements“ im Maven-Plugin (danke artspb)
- #98 Java 7 nicht mutieren, versuchen Sie es mit Ressourcen (danke @artspb)
- #109 erweitertes Entfernen des bedingten Mutators (danke @vrthra)
0,33
- Wechseln Sie zu Github
- Upgrade von ASM zur Unterstützung von Java 8-Bytecode (danke an „iirekm“)
- Teilweise Unterstützung für JUnit-Kategorien (danke an „chrisr“)
- Neuer Mutator zum Entfernen von Inkrementen (danke an Rahul Gopinath)
- Kleinere Verbesserungen bei der Protokollierung (danke an Kyle Rogers alias Stephan Penndorf)
- Fix für #92 – defekte Maven 2-Unterstützung
- Fix für #75 – fälschlicherweise ignorierte Tests in Klassen mit @Ignore und @BeforeClass / @AfterClass
0,32
- Stellt die Kompatibilität mit Java 7 wieder her
- Neuer Mutator zum Entfernen von Bedingungen
- Unterstützung für mutierende statische Initialisierer mit TestNG
- Klassenpfade ordnungsgemäß isolieren, wenn sie über Ant ausgeführt werden
- Pause baut auf Deckungsschwelle auf
- Erlauben Sie die Angabe von JVM
- Unterstützung benutzerdefinierter Testauswahlstrategien
- Unterstützt benutzerdefiniertes Ausgabeformat
- Unterstützung der benutzerdefinierten Testpriorisierung
- Behebung eines Problems beim Blockieren der Nutzung mit Robolectric
Beachten Sie, dass sich in dieser Version die Einrichtung für Ant-basierte Projekte ändert. Weitere Informationen zur Verwendung finden Sie im Ant-Setup.
0,31
- Maven 2-Kompatibilität wiederhergestellt
- Wesentlich schnellere Berechnung der Leitungsabdeckung
- Fix für #78 – Fehler, wenn der PowerMockito-Test Mock als Mitglied speichert
Diese Version ändert auch eine Reihe interner Implementierungsdetails, von denen einige für diejenigen von Interesse/wichtig sein könnten, die Tools verwalten, die in PIT integriert sind.
Mutationen werden jetzt intern begrenzt, wie unter https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE beschrieben
Es wurde eine neue Klasse (org.pitest.mutationtest.tooling.EntryPoint) eingeführt, die einen Teil der Duplikate entfernt, die bei den verschiedenen Möglichkeiten zum Starten der Mutationsanalyse vorhanden waren.
0,30
- Unterstützung für parametrisierte Spock-Tests
- Unterstützung für JUnitParams-Tests
- Fix für #73 – JUnit-parametrisierte Tests, die Mutee während des Setups aufrufen, schlagen während der Mutationsphase fehl
- Behebung von #63 – Ant-Task schlägt fehl, wenn leere Optionen angegeben werden
- Möglichkeit, Maven-Optionen über die Befehlszeile zu überschreiben
- Möglichkeit, einen Build zum Scheitern zu bringen, wenn er eine bestimmte Mutationspunktzahl nicht erreicht
- Leistungsverbesserung, wenn Tests @BeforeClass- oder @AfterClass-Annotationen verwenden
- Leicht verbesserte Planung über mehrere Threads
- Verbesserte Unterstützung mehrerer Maven-Projekte
- Integration mit Quellcodeverwaltung für Maven-Benutzer
0,29
- Inkrementelle Analyse (--historyInputLocation und --historyOutputLocation)
- Die Inline-Code-Erkennung ist standardmäßig aktiviert
- Standardmäßig leisere Protokollierung
- Verbesserte Java 7-Unterstützung
- Upgrade von ASM von 3.3 auf 4
- Behebung von Parallelitätsproblemen während der Coverage-Erfassung
- Behebung von #53 – Probleme mit Snapshot-Junit-Versionen
- Fix für #59 – doppelte Abhängigkeiten, die über Maven festgelegt wurden
0,28
- Endgültige Blockerkennung inline (--detectInlinedCode)
- Neuer experimenteller Switch-Anweisungsmutator (beigetragen von Chris Rimmer)
- Mutieren Sie keine Groovy-Klassen
- Fix für #33 – user.dir so einstellen, dass es mit Surefire übereinstimmt
- Fix für #43 – optionale Unterdrückung von Ordnern mit Zeitstempel (--timestampedReports=true/false)
- Fix für #44 – Ausnahme bei gleichzeitiger Änderung beim Sammeln von Abdeckung
- Fix für #46 – falsches Setzen von Flags durch Ant-Task
- Geringerer Speicherbedarf für den Hauptprozess
- Schnellere Abdeckungserfassung für große Codebasen
- Schnelleres Scannen des Klassenpfads für große Codebasen
- Unterstützung für JUnit 3-Suite-Methoden
- Korrekturen für fehlerhafte Erkennung von JUnit 3-Tests
Bekanntes Problem – Fix für Nr. 33 löst das Problem für Maven 2-Benutzer möglicherweise nicht.
Die Erkennung von Groovy-Code wurde mit Groovy 2 noch nicht getestet, wodurch möglicherweise ein erheblich anderer Bytecode als in früheren Versionen generiert wird.
0,27
- Viel schönere Berichte
- Vermeidet jetzt mutierende Assert-Anweisungen
- Option „inScopeClasses“ entfernt – stattdessen „targetClasses“ und „targetTests“ verwenden
- Fix für 100 % CPU-Auslastung, wenn die untergeordnete JVM abstürzt
- Fix für #35 #38 – Der experimentelle Member-Variablen-Mutator korrigiert jetzt den Stack
- Fix für #39 – Reihenfolge der Klassenpfadelemente wird jetzt beibehalten, wenn sie von Maven ausgeführt werden
Benutzer, die ein Upgrade durchführen, müssen aufgrund der Entfernung des inScopeClasses-Parameters möglicherweise ihren Build ändern
0,26
- Ameisenunterstützung
- Neuer experimenteller Mutator für Mitgliedsvariablen
- Fix für #12 #27 – hängt nicht mehr, wenn der zu testende Code Nicht-Daemon-Threads startet
- Fix für #26 – warnt jetzt, wenn im Klassenpfad keine Testbibliothek gefunden wird
- Fix für #30 – jetzt Fehler, wenn mutierte Klassen kein Zeilen- oder Quell-Debug haben
- Fix für #32 – behandelt jetzt JUnit-Annahmen korrekt
Bekanntes Problem – Der Mutator der neuen Mitgliedsvariablen kann Fehler bei synchronisierten Fehlern verursachen. Der Mutator ist jedoch standardmäßig deaktiviert und die generierten Fehler werden von PIT korrekt behandelt.
0,25
- TestNG-Unterstützung (experimentell)
- Behebung eines Problems, bei dem Mutationen in verschachtelten Klassen nicht voneinander isoliert sind
- Behebung einer fehlerhaften Klassenpfadisolation für Projekte, die xstream verwenden
- Verbesserte Handhabung von JUnit-parametrisierten Tests
- Möglichkeit, Mutationen auf bestimmte Klassenpfadwurzeln zu beschränken (--mutableCodePaths)
- Möglichkeit zum Hinzufügen von Nicht-Start-Klassenpfad-Roots (--classPath) (experimentell)
- Konfigurationswerte aus XML lesen (experimentell)
- Option, keinen Fehler auszulösen, wenn keine Mutationen gefunden werden
- Konsistente Reihenfolge der Klassen im HTML-Bericht
- Auf die Konsole geschriebene Statistiken
- Klassen werden beim ersten Scannen des Klassenpfads nicht mehr geladen
- Neue Syntax zur einfachen Aktivierung aller Mutationsoperationen
0,24
- JMockit-Unterstützung
- Option zur Ausgabe von Ergebnissen in XML oder CSV
- Fix für #11
- Verbesserter INLINE_CONSTS-Mutator
0,23
- Behebung von Problem 7 – Quelldateien nicht gefunden
0,22
- Upgrade von Xstream auf 1.4.1, um OpenJDK 7-Unterstützung zu ermöglichen
- Fix für Nr. 5 – Beschädigung des Zeilenumbruchzeichens in untergeordneten Prozessen
- Möglichkeit, Startargumente für untergeordnete Prozesse festzulegen
0,21
- Deutliche Leistungsverbesserungen
- Unterstützung für Powermock sowohl über den Klassenlader (erfordert PowerMockIgnore-Annotation) als auch über den Java-Agenten
- Kleinere Fehlerberichte und Verbesserungen der Benutzerfreundlichkeit
- Behebung eines schwerwiegenden Fehlers bei der Abhängigkeitsanalyse
- PIT-Abhängigkeiten werden bei der Ausführung über Maven nicht mehr im Klassenpfad platziert
- Unterstützung für den Ausschluss bestimmter Klassen oder Tests
- Unterstützung für ausführliche Protokollierung
0,20
- Begrenzen Sie die Anzahl der Mutationen pro Klasse
- Aktualisieren Sie xstream auf 1.3.1
- Von Maven Central verfügbar machen
0,19
- Eingebaute Enum-Methoden sind jetzt von der Mutation ausgeschlossen
- Fehler bei der Meldung ungetesteter Klassen behoben
- Unterstützung für den Ausschluss von Tests, die einen bestimmten Abstand vom Unterricht überschreiten
- Unterstützung für den Ausschluss von Methoden aus der Mutationsanalyse
- Leistungsverbesserungen
- Die Unterstützung für das Starten von Mutationsberichten vom JUnit-Runner wurde entfernt
0,18
- Erste öffentliche Veröffentlichung
Probleme
Bitte konsultieren Sie unsere Issue-Management-Regeln, bevor Sie Issues erstellen oder bearbeiten.
Credits
Pitest ist hauptsächlich die Arbeit von mir, hat aber auch von den Beiträgen vieler anderer profitiert.
Bemerkenswerte Beiträge sind hier nicht sichtbar, da sie vor der Migration dieses Codes nach Github-Include erstellt wurden
- Nicolas Rusconi – Ameisenaufgabe
- Struan Kerr-Liddell – Verbesserungen am HTML-Bericht
- Stephan Pendorf – Mehrere Verbesserungen, einschließlich verbesserter Mutatoren
Obwohl PIT keinen Code aus dem Jumble-Projekt (http://jumble.sourceforge.net/) enthält, wurde die Jumble-Codebasis bei der Entwicklung einiger Aspekte von PIT als Leitfaden verwendet.