Stryker 4.16 discovers the 17 unit tests and starts the initial run, then reports every mutant as survived in about ten seconds, 0.00 % score. Same result with coverage-analysis off and with xunit.runner.visualstudio 2.8.2, so the mutants are being run against the unmutated assembly. A hand-applied mutation makes the suite fail (two tests), so the tests themselves catch real faults.
What is in the repo already: stryker-config.json (mutate filter over PrometheusText.cs and MetricsAggregator.cs, break threshold 100), Pulse.Mutation.slnx to keep the Atlas scenarios out of mutation runs, and the dotnet-stryker tool manifest.
The stand-in is tools/mutation-check.sh: eight representative mutations, the unit suite has to kill every one, wired into ci.yml. It killed 8/8 at the time of writing.
Done when: dotnet stryker reports a real score on Pulse.Mutation.slnx (retest on each new Stryker release), CI runs it, and the script can retire.
Stryker 4.16 discovers the 17 unit tests and starts the initial run, then reports every mutant as survived in about ten seconds, 0.00 % score. Same result with coverage-analysis off and with xunit.runner.visualstudio 2.8.2, so the mutants are being run against the unmutated assembly. A hand-applied mutation makes the suite fail (two tests), so the tests themselves catch real faults.
What is in the repo already: stryker-config.json (mutate filter over PrometheusText.cs and MetricsAggregator.cs, break threshold 100), Pulse.Mutation.slnx to keep the Atlas scenarios out of mutation runs, and the dotnet-stryker tool manifest.
The stand-in is tools/mutation-check.sh: eight representative mutations, the unit suite has to kill every one, wired into ci.yml. It killed 8/8 at the time of writing.
Done when: dotnet stryker reports a real score on Pulse.Mutation.slnx (retest on each new Stryker release), CI runs it, and the script can retire.