So true. As jason points out:
- It’s boring. Write the obvious tests. Check code coverage - what did I miss? Write more tests capturing more edge cases. Wash, rinse, repeat. Ugh.
- It’s not trivial. I’m trying to put tests around code that was created months ago, and trying to capture the mental state of the coder and what he was doing is damn near impossible.
- You don’t get just unit testing, but instead you let your design lead your development.
- As you are writing the minimum code necessary to achieve the behaviour your test is checking, you end up with full code coverage.
- You can refactor as you test-and-code (and test, and code,…), and you have your tests to cover your ass as you go. If you need to refactor when it’s all finished, poor you. You are just left out in the wild.