Home

Awesome

Maven Central 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.17.3

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

1.17.1

1.17.0

1.16.3

1.16.2

1.16.1

1.16.0

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

1.15.8

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

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

1.15.4

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

1.15.2

#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

1.15.0

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

1.14.2

1.14.1

1.14.0

#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

1.13.1

1.13.0

1.12.0

1.11.7

1.11.6

1.11.5

1.11.4

1.11.3

1.11.2

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

1.11.0

Note that #1150 includes breaking interface changes which may require updates to third party plugins.

1.10.4

1.10.3

1.10.2

1.10.1

1.10.0

As a result of #1067 it is important that mutations are only created for a single class for each JVM. The MutationGrouper extension point has therefore been removed as this allowed this constraint to be violated. Any third party plugins using this extension are no longer supported.

Releases also includes multiple changes to internal data structures. Any third party plugins relying on these structures may need to be updated.

1116 provides a coarse way to exclude auto-generated code not picked up by pitest's other filters. It is disabled by default as it may exclude code that is valid for mutation in some situations, but can be enabled by adding the feature string +nofirstline.

1.9.11

1.9.10

1.9.9

1.9.8

Adds support for languages such as Kotlin where source files may not be within a directory structure which matches their package. Note that if the same filename occurs in more than one location, pitest cannot guarantee to resolve the correct file.

1.9.7

1.9.6

Note that #1085 changes the default behaviour so reports are no longer written to timestamped directories by default. If you require this behaviour you will need to explicitly enable it.

1.9.5

1078 is a breaking interface change, but is included in a point release as it is believed there are currently no external clients.

1.9.4

1.9.3

1054 Moves support of auto adding headless=true (to prevent keyboard focus being stolen on Macs) into a feature. It is enabled by default, but can be disabled by adding -MACOS_FOCUS to the features string.

1055 adds the option to guess the appropriate number of threads for the current machine by adding +auto_threads the features string. This option is disabled by default and designed for local use. It is not recommended for use on a CI server.

1.9.2

1.9.1

1.9.0

As a result of #1040 any external pitest test plugins (eg JUnit 5, TestNG, arcmutate accelerator) must be updated to a compatible version (1.0.0) when upgrading.

History files from earlier releases are incompatible and should be deleted when upgrading.

<details> <summary>Older versions</summary>

1.8.1

1.8.0

1.7.6

As a result of #1015 the TestNG plugin must now be configured when using pitest in codebases tested by TestNG. In earlier releases support was included automatically.

1.7.5

As a result of #993, anyone wishing to use the research orientated RV operators must configure the pitest-rv plugin, however these mutators are not recommended for general use.

1.7.4

1.7.3

1.7.2

1.7.1

1.7.0

Due to internal changes some third party plugins maybe incompatible with this release.

All history files should be deleted before upgrading.

The names of the remove conditionals mutators have changed slightly as a result of #930 and may need to be updated in build scripts if explicitly activated.

1.6.9

1.6.8

1.6.7

As a result of #900 the testPlugin parameter is now defunct, but pitest will continue to accept it without error for this release. Pitest will use any test-engines supplied on the classpath, falling back to the built in JUnit4 support when other test engines cannot handle the class.

1.6.6

1.6.5

1.6.4

1.6.3

1.6.2

1.6.1

1.5.2

1.5.1

1.5.0

1.4.11

1.4.10

1.4.9

1.4.8

1.4.7

1.4.6

1.4.5

1.4.4

1.4.3

1.4.2

1.4.1

1.4.0

1.3.2

Note when upgrading that history files generated by previous releases are not compatible with 1.3.2 an above.

1.3.1

1.3.0

428 changes the existing behaviour of the excludedClasses filter. Previously this excluded classes from both being mutated and run as tests which may require changes for some people when upgrading.

As a result of 429 TestNG tests will no longer be automatically detected - the new testPlugin parameter must be explicitly set to "testng".

1.2.5

1.2.4

1.2.3

1.2.2

1.2.1

(Note #347 will not detect javax.annotaion.Generated as it has only source retention.)

1.2.0

Note - as of this release the maven plugin will automatically determine which classes to mutate instead of assuming that the package names match the group id.

1.1.11

1.1.10

1.1.9

1.1.8

1.1.7

1.1.6

Note this release contains a known issue (#231). Please upgrade.

1.1.5

1.1.4

1.1.3

1.1.2

1.1.1

1.1.0

Please note that any stored history files or sonar results are invalidated by this release.

1.0.0

0.33

0.32

Note, setup for Ant based projects changes in this release. See ant setup for details on usage.

0.31

This release also changes a number of internal implementation details, some of which may be of interest/importance to those maintaining tools that integrate with PIT.

Mutations are now scoped internally as described in https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE

A new class (org.pitest.mutationtest.tooling.EntryPoint) has been introduced that removes some of the duplication that existed in the various ways of launching mutation analysis.

0.30

0.29

0.28

Known issue - Fix for #33 may not resolve issue for maven 2 users.

Detection of Groovy code has not yet been tested with Groovy 2 which may generate substantially different byte code to earlier versions.

0.27

Upgrading users may need to modify their build due to removal of the inScopeClasses parameter

0.26

Known issue - The new member variable mutator may cause errors in synchronized errors. The mutator is however disabled by default, and the generated errors are correctly handled by PIT.

0.25

0.24

0.23

0.22

0.21

0.20

0.19

0.18

</details>

Issues

Please consult our issue management rules before creating or working on issues.

Credits

Pitest is mainly the work of me but has benefited from contributions from many others.

Notable contributions not visible here as they were made before this code was migrated to github include

Although PIT does not incorporate any code from the Jumble project (http://jumble.sourceforge.net/), the Jumble codebase was used as a guide when developing some aspects of PIT.