Залежно від того, що мається на увазі під «тестовими підрозділами», я не думаю, що дійсно тестові одиниці низького рівня полегшують хороший дизайн настільки ж трохи тести інтеграції вищого рівня - тести, які перевіряють групу акторів (класи, функції, що завгодно) у ваш код правильно поєднується, щоб створити цілу купу бажаних способів поведінки, про які було узгоджено між командою розробника та власником продукту.
Якщо ви можете писати тести на цих рівнях, це підштовхує вас до створення приємного, логічного коду, схожого на API, який не потребує безлічі шалених залежностей - бажання мати просту настройку тесту, природно, призведе до того, що у вас не буде багато шалені залежності або щільно зв'язаний код.
Не помиляйтесь, однак - тести блоку можуть призвести до поганого дизайну, а також хорошого дизайну. Я бачив, як розробники беруть трохи коду, який вже має приємний логічний дизайн та єдину проблему, і розтягують його та впроваджують більше інтерфейсів виключно з метою тестування, і як результат роблять код менш читабельним і важче змінювати , а також, можливо, навіть більше помилок, якщо розробник вирішив, що наявність безлічі тестів низького рівня означає, що вони не повинні мати тести вищого рівня. Особливим улюбленим прикладом є помилка, яку я виправив, коли було дуже багато розбитого, "перевіряемого" коду, що стосується отримання інформації про буфер обміну та вимикання. Усі розбиті та роз'єднані на дуже малі рівні деталізації, з великою кількістю інтерфейсів, безліччю макетів у тестах та іншим цікавим матеріалом. Лише одна проблема - не було жодного коду, який би реально взаємодіяв із механізмом буфера обміну ОС,
Тестові одиниці можуть безумовно керувати вашим дизайном - але вони автоматично не спрямовують вас на гарний дизайн. Потрібно мати уявлення про те, що таке хороший дизайн, що виходить за рамки «цей код перевірений, тому він перевіряється, тому він хороший».
Звичайно, якщо ви один з тих людей, для яких "одиничні тести" означає "автоматичні тести, які не проходять через інтерфейс користувача", то деякі з цих попереджень можуть бути не настільки актуальними - як я вже сказав, я вважаю, що вищі -тестові інтеграційні тести часто є більш корисними, коли справа стосується вашого дизайну.