CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/pitest-mutation

Configures PIT (PITest) for mutation testing of JVM projects (Java, Kotlin via the Kotlin plugin) - wires the `pitest-maven` or `pitest-gradle-plugin` with `mutationThreshold`, `coverageThreshold`, target classes/tests filtering, runs `mvn pitest:mutationCoverage`, parses the HTML + XML reports. Use when the JVM suite needs mutation-quality verification - the canonical Java mutation testing tool, fast (PIT analyzes "in minutes rather than days").

75

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

pitest-pitfalls.mdreferences/

PIT - anti-patterns and limitations

Detailed pitfalls and constraints for pitest-mutation. Linked inline from that skill's SKILL.md.

Anti-patterns

Anti-patternWhy it failsFix
Mutating the entire codebase every PRSlow; team disables.withHistory + per-changed-file scope.
mutationThreshold: 100Unreachable; first failed run blocks all PRs.Start at the current baseline; ratchet up.
Mixed Maven/Gradle config (both plugins active)Conflicting configurations; cryptic errors.Pick one build tool.
Missing JUnit 5 plugin dependencyTests don't run; mutation coverage 0.Add pitest-junit5-plugin for JUnit 5.
Targeting test classes in targetClassesMutates test code; meaningless.targetClasses = production package; targetTests = test package.
All mutators (ALL mutator set)Many irrelevant mutants; long runtime.DEFAULTS (default) or STRONGER.

Limitations

  • Bytecode-level. PIT mutates compiled .class files; some language-level constructs (Kotlin sealed classes, certain generics) produce equivalent mutants.
  • Build-time integration. Requires Maven / Gradle; standalone PIT is awkward for Bazel / Pants.
  • Commercial Kotlin / Spring features. ArcMutate is paid; open-source PIT covers the basics.
  • Per-class scope only. No file-level or method-level scoping out of the box; use targetClasses patterns.

SKILL.md

tile.json