Питання конкретно посилається на "тестування білого поля". Тут ваші тести мають інтимні знання про внутрішню структуру вашого коду та стверджують поведінку на кожному кроці, а не просто вхід / вихід / побічний ефект (тестування чорної скриньки). Хоча JUnit чудово виконує і те, і інше, вам потрібні додаткові рамки, щоб зробити це в рамках тестування одиниць.
EasyMock та JMock - це хороші рамки для цього. Я схильний виступати за JMock.
Загрожуючи розпочати дебати про ОТ, слід ретельно подумати про наслідки тестування білого поля. Тести білого поля чітко пов'язані з вашим кодом (очевидно), і якщо їх не використовувати обережно, глузування рам може спричинити ваші тести досить складні, важкі для читання і, як правило, більш крихкі при рефакторингу.
Я схильний дотримуватися суміші обох. Тести на чорну скриньку, де це можливо, і тести на білі поля, що скупо застосовуються до більш ризикованого / складного коду.
Звичайно, перелічені вище рамки також можуть бути використані в тестах чорної скриньки, де кількість класів, що сприяють (вводяться) велика, і просте заглушка стає непростим.
Що стосується TDD - це насамперед підхід, що покращує дизайн до написання коду, а не просто спосіб написання тестів. Випробування, які ви маєте в кінці, є важливим результатом, але крім того, підхід призначений для покращення дизайну та структури вашої програми.