Overview
Mutato is a mutation-testing engine for .NET. It breeds thousands of tiny, deliberate bugs — mutants — into your code, reruns your test suite against each one, and reports which mutants slipped past unnoticed.
A mutant that your tests still pass with is a survivor: a real gap in your suite, hiding behind a green checkmark. Line coverage tells you a line ran; Mutato tells you whether a test would actually notice if that line were wrong.
What makes it different
Section titled “What makes it different”- Type-aware mutants. Operators are chosen against Roslyn’s semantic model, so every mutant is a compilable, plausible bug — not type-invalid noise.
- One compile, not one per mutant. A transparent
cscwrapper weaves every mutant into a single instrumented assembly; the active mutant is selected by writing one static field. - Coverage-filtered, warm execution. A single coverage pass maps tests to mutants, then a pool of long-lived in-process hosts reruns only the covering tests — in parallel, with adaptive timeouts and crash respawn.
- Actionable reports. A straight mutation score plus an HTML report that points at every survivor as an exact source diff, via the standard Stryker schema viewer.
Mutato is MTP-first and works with xUnit v3, TUnit, and the Microsoft Testing Platform.
Next steps
Section titled “Next steps”- Getting started — install, point it at your tests, run.
- How it works — the compile-time rewrite and warm host pool.
- Configuration —
mutation-config.jsonand CLI flags. - Cooperative hooks — help Mutato kill time-based mutants faster.