3 ms·
>That said, testing is primarily a design tool (aka, identifying tight coupling). The more you do it, the more you learn from it, the less value you get from it
by crdoconnor 9y ago
>That said, testing is primarily a design tool (aka, identifying tight coupling). The more you do it, the more you learn from it, the less value you get from it because you inherently start to program better
Unit tests "identify" tight coupling because they are themselves a form of tight coupling.
- tomp 9y agoHuh? My interpretation is, it's harder to write shitty code (e.g. hard-coding the database server IP) if you write unittests (where you'll need to abstract the database interface to be able to mock it). In this manner, unittests promote clean, separated interfaces and work against tight coupling.
- crdoconnor 9y agoTests that couple to database connection code and mock or stub it out are more tightly coupled to the code than tests that just couple to, say, REST end points. I'm not denying that the pain of having one form of tight coupling interact with another can be used to "guide" the design of the code. It can be. I've done it. I'm simply pointing out that you're using tight couplings (between unit test and code) to highlight other tight couplings (between code and code). I use my eyes to detect tight couplings in code that deserve a refactor because that's cheaper than writing 10,000 lines of unit test code to "guide design". Each to their own, though. I know my view isn't a popular one: https://news.ycombinator.com/item?id=16374624 https://news.ycombinator.com/item?id=16374624