Why Failing Tests Make Refactoring Safe
I recently read an interesting blog post about why it’s ok not to write unit tests.
However, I believe the topic does deserve a proper rebuttal of some form, and I would like to try my hand.
You can find the full discussion at CodeQuirks.com but I’ve included the most important points here.
Why failing tests create safety.
Until recently I didn’t fully get the meaning of this idea.
The big problem I saw was that failing tests just got altered or deleted. How on earth does deleting or changing a failing test make the refactor easy? Couldn’t you have just refactored without the test?
The answer hit me like an untested jar-file.
When I change a piece of code and 3 tests fail, I can read those tests and know exactly what contracts I had violated. That doesn’t mean my change was wrong, but it does make it very clear what assumptions had previously been made about the system.
This empowers me to go into any areas that used those components, and modify them based on the new contract I am trying to put in place. I now know exactly how my alteration affects other areas of the system.