Mutation Testing for Java with PIT: Stop Trusting Your Coverage Numbers

You have 100% line coverage for unit testing. A bug ships anyway. It happens because line coverage measures which lines of code your tests execute, not whether your tests are actually capable of detecting a defect. A test that calls a method but never asserts anything will push your coverage number to 100% while catching precisely nothing. That is not a corner case. It is a systematic blind sp...