I can't believe I've never heard of this. It looks really useful.<p>Thanks for sharing. I will play with it today!<p>Relevant plugin for IntelliJ:
<a href="https://plugins.jetbrains.com/plugin/7119?pr=idea" rel="nofollow">https://plugins.jetbrains.com/plugin/7119?pr=idea</a>
A problem with this is that sometimes nondeterminism is OK.<p>For instance, changing the constant to another prime in the "classic" hashcode implementation (repeatedly multiply by a prime and add the next field) will (probably) not trigger any (well-written) tests, and indeed generally won't be detrimental at all, but will be flagged by this sort of test.
I have used Pitest at work, it is very good and on more than one occasion it unearthed wanting tests.<p>Unfortunately, we had to remove it from our build. Our CI pipeline uses VM's that were not provisioned with this type of testing in mind and pitest ended up slowing the build enough to make it painful. If we could get past this, I would turn it on in the morning.
There seems to be a sbt plugin by the original creator that has not been updated since last year: <a href="https://github.com/hcoles/sbt-pit" rel="nofollow">https://github.com/hcoles/sbt-pit</a><p>Does anyone know if the current version of pit already works well with scala?
so if i read this correctly "This filter will not work for tests that utilise classes via interfaces, reflection or other methods where the dependencies between classes cannot be determined from the byte code."<p>if you are using interfaces to inject and mock things, it cannot test your code?<p>this sounds really cool, but most of the stuff we do is down with interfaces...
There are also other great mutation testing tools for other languages, such as Mutator: <a href="http://ortask.com/mutator/" rel="nofollow">http://ortask.com/mutator/</a>