
PIT
PIT is a free mutation-testing tool for Java and JVM bytecode projects.
What PIT is
PIT is a free mutation-testing tool for Java and JVM bytecode projects. It measures whether unit tests detect faults by running them against automatically changed versions of application code. Configurable bytecode mutations can remove method calls, invert logic, or alter return values. PIT uses line coverage, test execution speed, and test naming conventions to choose and prioritize tests, then reports mutation coverage alongside line coverage. You can launch it from the command line, Ant, or Maven; third-party integrations are listed for Gradle, Eclipse, and IntelliJ. Java is supported directly, while Kotlin use is available through the ArcMutate plugin. PIT supports JUnit 3, JUnit 4, and TestNG; JUnit 5 requires a plugin. Versions 1.4.0 and later require Java 8 or above and JUnit or TestNG on the classpath. Mutation runs can take a long time depending on project size and test speed, so PIT recommends focusing analysis on changed code.
Good
- Free to use.
- Reports mutation coverage alongside line coverage.
- Supports incremental analysis and parallel execution.
- Can prioritize tests using coverage, speed, and naming.
- Surviving mutant reports and a mutation quality gate are available.
Watch out
- JUnit 5 requires a plugin.
- Long mutation runs depend on codebase size and test speed.
- Bytecode must include line numbers and source file names.
Who it suits
PIT suits Java and JVM developers who want to assess whether their tests catch faults. It can fit workflows using supported build tools, IDE integrations, or a command line.
Verdict
PIT offers configurable mutation testing and reporting for Java and JVM projects. Check its JUnit 5 plugin requirement and potentially lengthy runtime against your project needs.
The facts
Each one read from PIT's own pages, with the date it was checked.
What it does
- Build integrations
- PIT can be launched from the command line, Ant, or Maven, with third-party integrations for Gradle, Eclipse, and IntelliJ.checked 30 Sep 2026
- Bytecode requirement
- PIT requires line numbers and source file names in bytecode and mutates bytecode rather than compiling source code.checked 30 Sep 2026
- Distribution
- PIT releases are available through GitHub and its binaries are available on Maven Central.checked 30 Sep 2026
- IDE integrations
- The PIT site lists third-party Eclipse and IntelliJ plugins and says PIT can also be launched from most other IDEs as a Java application.checked 30 Sep 2026
- JUnit 5 limit
- JUnit 5 is not supported out of the box, though the FAQ links to a plugin for it.checked 30 Sep 2026
- Language coverage
- PIT is designed for Java and the JVM; Kotlin support is provided through an ArcMutate plugin.checked 30 Sep 2026
- Language support
- The FAQ lists Java as supported and says Kotlin support is available through an ArcMutate plugin.checked 30 Sep 2026
- Mocking frameworks
- PIT says it is tested with major mocking frameworks and lists JMock, EasyMock, Mockito, PowerMock, and JMockit as working with it.checked 30 Sep 2026
- Mutation coverage
- PIT reports mutation coverage alongside line coverage, and describes mutation testing as a way to assess whether executed code is meaningfully tested.checked 30 Sep 2026
- Mutation handling
- PIT keeps generated mutations in memory and does not write them to disk unless its EXPORT feature is explicitly enabled.checked 30 Sep 2026
- Mutation operators
- PIT applies configurable bytecode mutations, including removing method calls, inverting logic, and altering return values.checked 30 Sep 2026
- Purpose
- PIT runs unit tests against automatically modified versions of application code to measure whether tests detect faults.checked 30 Sep 2026
- Reports
- PIT produces reports combining line coverage and mutation coverage information.checked 30 Sep 2026
- Requirements
- The FAQ says PIT 1.4.0 and later requires Java 8 or above and either JUnit or TestNG on the classpath.checked 30 Sep 2026
- Runtime limitation
- Mutation testing can take a long time depending on codebase size and test suite speed; PIT recommends focusing analysis on changed code.checked 30 Sep 2026
- Security and compliance
- The PIT pages reviewed do not state security certifications or compliance attestations.checked 30 Sep 2026
- Security and privacy
- PIT’s FAQ says generated mutations are held in memory and not written to disk unless its EXPORT feature is explicitly enabled; the site privacy page says it uses Google Analytics cookies and log files.checked 30 Sep 2026
- Support
- PIT directs users to its Google Group for support questions.checked 30 Sep 2026
- Test selection
- PIT uses line coverage, test execution speed, and test naming conventions to select and prioritize tests for mutations.checked 30 Sep 2026
The company
- Maker
- The About page identifies Henry Coles, a software developer based in Edinburgh, as the principal author and says PIT has also received contributions from others.checked 30 Sep 2026
The full review of PIT
Overview
PIT is a mutation-testing tool for Java and JVM projects, aimed at developers who want to know whether their unit tests catch meaningful faults rather than merely execute lines of code. Its configurable bytecode mutations and combined coverage reports make it a practical choice for strengthening an existing test suite, provided the project can accommodate the runtime and framework requirements.
Key features
PIT modifies compiled bytecode in ways such as removing method calls, changing return values, or inverting logic, then runs tests against those variants. Because it reports mutation coverage alongside line coverage, teams can distinguish code that tests merely reach from code whose tests detect altered behavior. That is a more useful signal of test effectiveness than line coverage alone, though surviving mutants still need developer judgment.
Mutation operators are configurable, and PIT prioritizes tests using line coverage, execution speed, and naming conventions. Incremental analysis, parallel execution, surviving-mutant reports, and a mutation quality gate can help fit analysis into an ongoing development workflow. Its recommendation to focus on changed code is especially relevant for large projects, where running mutations across the whole codebase can take a long time.
PIT can run from the command line, Ant, or Maven. Third-party integrations cover Gradle, Eclipse, and IntelliJ, and it can also be launched from most other IDEs as a Java application. It works with JUnit 3, JUnit 4, and TestNG; JUnit 5 requires a plugin rather than working out of the box. Java 8 or later is required from PIT 1.4.0 onward, along with JUnit or TestNG on the classpath. PIT mutates bytecode, not source, and requires line numbers and source file names in that bytecode.
Java is the direct fit. Kotlin projects can use the ArcMutate plugin, but that is a separate integration. PIT says it works with major mocking frameworks, including JMock, EasyMock, Mockito, PowerMock, and JMockit.
Pricing
PIT is free, with a free plan and no paid tiers described. That makes it accessible for individual developers and teams that want mutation testing without a software license cost. The trade-off is operational rather than financial: longer runs can consume time and resources, and projects using JUnit 5 need to account for the plugin requirement. Releases are available through GitHub, with binaries on Maven Central.
Platforms
PIT supports Linux, macOS, and Windows, as well as self-hosted use. Its Java and JVM focus makes the choice of build and test framework more consequential than the operating system.
Who it's for
PIT suits Java teams that already have unit tests and want a sharper measure of whether those tests detect defects. Its test prioritization, incremental analysis, and parallel execution are useful for teams integrating mutation checks into development, particularly when they can target changed code. It is a less straightforward choice for projects dependent on JUnit 5 without a plugin, or for large suites that cannot spare time for potentially lengthy runs.
Generated mutations stay in memory and are not written to disk unless the EXPORT feature is enabled. PIT’s privacy page says the site uses Google Analytics cookies and log files; its pages do not state security certifications or compliance attestations. Support questions are directed to the Google Group.
Pros and cons
- Pros: Mutation coverage complements line coverage by showing whether tests detect behavioral changes.
- Pros: Configurable operators, incremental analysis, parallel execution, and test prioritization offer ways to focus work and manage runtime.
- Pros: Free availability and command-line, Ant, and Maven launch options lower adoption barriers for Java projects.
- Cons: Mutation runs can take a long time, especially across large codebases or slow test suites.
- Cons: JUnit 5 needs a plugin, and bytecode must retain line numbers and source file names.
- Cons: Kotlin support depends on the ArcMutate plugin rather than a direct PIT integration.
Alternatives
ArcMutate is worth considering for Kotlin support or if a freemium option better suits your needs; it offers free licenses for open-source projects and a paid Base plan.
Stryker Mutator is a free alternative for JavaScript, TypeScript, C#, or Scala projects rather than Java and JVM bytecode.
Mutatest is another free, open-source option. Infection is also free. Cosmic Ray is a free option for Linux and self-hosted environments. Mutant may suit teams weighing a free full-featured option for public repositories against a commercial plan billed per developer. Dextool Mutate is a free option for Linux and self-hosted use. muttest is another free option for Linux, macOS, and Windows. Browse the Mutation Testing Tools category for more choices.
Verdict
Choose PIT if you maintain Java or JVM software and want a free, configurable way to assess whether unit tests catch altered behavior, not just cover lines. Its reporting and workflow features make that signal actionable; look elsewhere if JUnit 5 support without a plugin or short full-suite runtimes are essential.
Alternatives to PIT
- 1
Mutatest
Free planOpen sourceAPILinuxmacOSSelf-hosted7.2Free plan - 2

ArcMutate
Free planLinuxmacOSSelf-hostedWindows6.7From $8 a month - 3
Mutant
Free planLinuxmacOS6.7From $250 a year - 4
MuJava
Free planLinuxmacOSWindows6.3Free plan - 5
pymute
Free planLinux6.3Free plan - 6
go-mutesting
Free planLinuxSelf-hosted6.2Free plan
