3 ms·
On the teams I've work on, pushing code that doesn't build and pass all unit tests is grounds for mocking. I have an alias in my zshrc file called "safepush" th
by mabbo 11y ago
On the teams I've work on, pushing code that doesn't build and pass all unit tests is grounds for mocking. I have an alias in my zshrc file called "safepush" that runs
[clean command] && [build command] && [test command] && git push
If any piece doesn't succeed, the command stops. No push without unit tests passing.
- TeMPOraL 11y agoAnd, as the article points out nicely, this basically prevents people from refactoring their code. In any nontrivial codebase, when you have a lot of tests, then what would have been 15 minutes of work rearranging class structure turns into a whole day of rearranging test cases to fit the architecture again.
- mabbo 11y agoIt can be, I won't entirely disagree. But it depends how highly coupled your unit tests are to the design. Unit tests are a safety mechanism- you can easily bog yourself down with too many, tying things up in bad ways, or presuming a specific design. But do you really want to live with no safety at all? The art, as I see it, lies in writing tests in such a way that you get the guarantees you need, the safety of not letting the next guy (or yourself) screw it all up during later changes while simultaneously not preventing you from doing needed refactoring. It's a fun challenge.
- TeMPOraL 11y agoExactly what you wrote. That's why I am generally for testing, but I don't buy into Test Driven Development.