SkillAgentSearch skills...

Pitest

State of the art mutation testing system for the JVM

Install / Use

/learn @hcoles/Pitest
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Maven Central Version Build Statis Build Status

Pitest (aka PIT) is a state of the art mutation testing system for Java and the JVM.

Read all about it at https://pitest.org

Releases

1.22.0

  • #1437 Test filter extension point

1.21.1

  • #1436 Allow filtering JUnit4 by runner

1.21.0

  • #1434 deprecate unsafe instruction index access

1.20.7

  • #1432 Bump commons-text to 1.14.0
  • #1433 Expand MethodTree api

1.20.6

  • #1431 Fix performance regression

1.20.5

  • #1428 Support categories for junit4 parametrised tests
  • #1429 Bump asm to 9.9

1.20.4

  • #1427 Disable empty method warnings for interfaces

1.20.3

  • #1426 auto add junit engines when missing from classpath

1.20.2

  • #1422 Handle args files in the argLine

1.20.1

  • #1417 Update dependencies
  • #1418 Filter build messages with the same content
  • #1419 Prevent re-evaluation of suite classes

1.20.0

  • #1415 Extension point for test stat listeners

1.19.6

  • #1413 Bump asm to 9.8
  • #1414 Show basic test stats

1.19.5

  • #1412 Catch and log empty methods in filters

1.19.4

  • #1409 Support Quarkus 3.22 and above

Note Quarkus support also requires version 1.2.3 or above of the pitest JUnit 5 plugin.

1.19.3

  • #1407 Log number of active classloaders

1.19.2

  • #1404 Switch to central distribution before sonatype EOL

1.19.1

  • #1399 Do not filter user code in try with resources
  • #1401 Extract errors when JUnit4 classes cannot be loaded

1.19.0

  • #1394 handle parenthesis in paths
  • #1395 New extension point - mutator urls

1.18.2

  • #1387 Quote classpath entries to handle spaces

1.18.1

  • #1386 Handle spaces in agents and variables inherited from launch

1.18.0

  • #1380 Update minimum supported Java runtime to 11
  • #1379 Fully remove deprecated scm maven goal
  • #1275 Pass process parameters by file
  • #1381 Adopt features from Java 11 by (thanks @timtebeek)
  • #1382 Ensure agent jar files removed at end of session

1.17.4

  • #1333 Expand ${settings.localRepository} in <argLine> (thanks @martinoconnor)
  • #1373 report test count

1.17.3

  • #1369 Dry Run Support

Maven users can now gather coverage information and generate mutants, but skip the mutant analysis stage by running setting the 'pit.dryRun' flag to true.

1.17.2

  • #1362 Exclude lambdas in methods excluded by annotation (thanks @see-quick)

1.17.1

  • #1353 Warn about future SCM goal removal
  • #1355 Upgrade ASM for java 24 support
  • #1359 Remove use of reflection based toString generator
  • #1361 Initial support for cross module tests in maven

1.17.0

  • #1348 Extend transformation extension point
  • #1349 Improve powermock stability

1.16.3

  • #1345 Improved delayed execution detection in static initialization code
  • #1347 Auto add standard kotlin source dirs for maven projects

1.16.2

  • #1340 Show covering tests for surviving mutants in html report (thanks @vivganes)
  • #1342/#1343 Fix misleading logging of history paths (thanks @vivganes)
  • #1344 Mutate delayed execution code in enums and singletons

1.16.1

  • #1329 Prevent version clashes with aggregate goal when plugins use jackson

1.16.0

  • #1311 - Include unmodifiable collections stored directly to fields in the +funmodifiablecollection filter for defensive code
  • #1319 - Use environment variables from surefire config
  • #1322 - Automatically add -ea to enable assertions
  • #1321 - Expand BuildVerifier interface

Api change in #1321 is backwards compatible, but plugins written against 1.16.0 may not work with earlier versions.

1.15.8

  • #1310 Filter mutations to Collections.unmodifiable*
  • #1309 Replace fields in argLines imported from surefire config
  • #1308 Bump maven vcs versions

The filtering for #1310 is off by default. To activate it add the filter string +funmodifiablecollection.

1309 adds a new maven property parseSurefireArgLine. This is set to true by default, but surefire argline parsing can now be disabled by setting it to false.

1.15.7

#1305 Coverage not recorded for code in packages name com.sun*

A filter intended to pickup legacy JDK classes in the "com.sun.*" package was missing a ', resulting in no code coverage being registered if the code under test happened to be in a package starting with "sun".

1.15.6

  • #1295 temporarily remove dynamic call tracking

Invoke dynamic call tracking for static initializer code will be reintroduced when additional logic to suppress mutation filtering for delayed execution code has been implemented.

1.15.5

  • #1292 Arg lines taken from surefire config do not have properties replaced

1.15.4

  • #1288 - New extension point to allow custom coverage export formats
  • #1289 - Parse argline configuration from surefire configuration
  • #1274 Follow invoke dynamic calls when detecting static initializer only methods

Note, maven users who have previously needed to duplicate argline parameters between surefire and pitest's jvmArgs and argline parameters may need to adjust their configuration when upgrading. Entries supplied to surefire will now automatically be added to pitest.

1.15.3

  • #1271 - Double check thread status before marking minion as dead

1.15.2

  • #1268 - Filter Lombok NonNull checks
  • #1267 - Expand test api to allow reporting of errors during test scanning

#1267 will ensure that previously hidden errors encountered by the JUnit5 plugin will now be reported. This is a backwards compatible api change. It will have no effect until the JUnit5 plugin is updated to use the expanded api. The updated plugin will not be compatible with earlier versions of pitest.

1.15.1

  • #1260 Upgrade to ASM 9.6 for Java 22 support
  • #1261 Do not error on pitest history files < 1.15.0

1.15.0

  • #1253 suppress coverage stats when history test reduction enabled
  • #1252 add extrafeatures param for maven to allow features to be added on commandline without overwriting existing list
  • #1251 expand history interfaces (breaking change)
  • #1250 improve error message when failing to parse feature strings
  • #1248 performance tweak - delay test class identification
  • #1247 legacy code removal

As a result of the breaking api changes in #1251, the arcmutate kotlin plugin should be upgraded to 1.1.0 when upgrading to pitest 1.15.0

1.14.4

#1246 Priotitise previous killing test when using history files

1.14.3

  • #1239 Support comma separated excludedGroups (thanks @johnathana)
  • #1243 Explicitly order classpath in history file to ensure consistency between runs
  • #1245 Prevent confusing logging of dummy incremental analysis runs

1.14.2

  • #1221 - Unified percentage calculate (thanks @Vampire)
  • #1218 - Thread safety for results collection when tests run in parallel (thanks @Vampire)
  • #1225 - Prevent error when non archive files included on classpath
  • #1229 - Mutate Iterables to emptyList
  • #1227/1232 - Fix MethodMutator interface to depend on abstract types

1.14.1

  • #1215 Apply coverage rewrites when aggregating reports
  • #1219 Ensure try with resources filtering applied first (thanks @Vampire)

1.14.0

  • #1213 Filter equivalent divide by -1 maths mutants
  • #1212 Auto add junit-platform-launcher

#1212 Largely resolves the issue of keeping the pitest-junit5-plugin version in sync with the junit5 version for maven users.

When used with 1.2.0 of the pitest-junit5-plugin, pitest will now automatically select a version of junit-platform-launcher which is compatible with the version of junit5 used by the system under test.

Issues remain for gradle users who may still encounter api compatibilities when using 1.2.0 of the pitest-junit5-plugin. These can however now be resolved by manually adding the correct version of junit-platform-launcher to the classpath.

It is hoped that a future version of the pitest gradle plugin will implement a fix similar to the pitest-maven solution.

1.13.2

  • #638 Ensure % shows as 100 when all mutants killed (thanks @Vampire)
  • #1197 Show start up info when logging set to VERBOSE_NO_SPINNER (thanks @Vampire)
  • #1198 Logging improvements (thanks @Vampire)
  • #1200 Warn if parallel test execution enabled during coverage collection (thanks @Vampire)
  • #1199 Switch to System.nanoTime for test timings (thanks @Vampire)
  • #1207 Support for removal of class level annotations

1.13.1

  • #1194 Support **. pattern in globs (thanks @Pfoerd)

1.13.0

  • #1188 Allow mutators to produce multiple distinct mutations
  • #1190 Provide test prioritiser to interceptors
  • #1191 Enable mutation of annotations of methods and fields

1.12.0

  • #1186 New extension points

1.11.7

  • #1178 Commas in killing test name break csv export (thanks @Bonajo)
  • #1177 Apply features in a consistent order
  • #1176 Upgrade to ASM 9.5

1.11.6

  • #1171 Prevent double instantiation of features
  • #1170 Update links to https (thanks @romani)

1.11.5

  • #1167 Fix poor static analysis performance for large methods
  • #1166 Update pitest web link to https (thanks @romani)

1.11.4

  • #1161 Prevent duplicate clinit when synthetic clinit present
  • #1162 Auto add kotlin source dirs to maven when present

1.11.3

  • #1159 Include only mutated classes in line coverage stats

1.11.2

  • #1157 Report only target code lines

The line coverage stats reported on the console included code lines for the entire project, even when filters were applied. This resulted in dramatically low coverage scores.

1.11.1

  • #1156 Prevent synthetic lines being counted in coverage

1.11.0

  • #1138 Do not mutate redundant fall through to default switch cases
  • #1150 New extension points
View on GitHub
GitHub Stars1.8k
CategoryDevelopment
Updated23h ago
Forks365

Languages

Java

Security Score

100/100

Audited on Apr 1, 2026

No findings