Я досить новачок у TDD, і у мене виникають проблеми при створенні мого першого тесту, коли він постає перед будь-яким кодом реалізації. Без будь-яких рамок до коду реалізації, я можу написати свій перший тест, проте я хочу, але він, як видається, завжди виявляється заплутаним моїм способом мислення Java / OO про проблему.
Наприклад, в моєму Github ConwaysGameOfLifeExample перший тест, який я написав (rule1_zeroNeighbours), я почав зі створення об’єкта GameOfLife, який ще не був реалізований; називається методом набору, який не існував, кроковим методом, який не існував, методом get, який не існував, а потім використаний актар.
Тести розвивалися, коли я писав більше тестів і реконструювався, але спочатку це виглядало приблизно так:
@Test
public void rule1_zeroNeighbours()
{
GameOfLife gameOfLife = new GameOfLife();
gameOfLife.set(1, 1, true);
gameOfLife.step();
assertEquals(false, gameOfLife.get(1, 1));
}
Це виглядало дивним, коли я змушував розробку проекту базуватися на тому, як я вирішив на цьому ранній стадії написати цей перший тест.
Як ви розумієте, TDD це добре? Здається, я слідую принципам TDD / XP в тому, що мої тести та впровадження розвивалися з часом із рефакторингом, і тому, якби ця початкова конструкція виявилася марною, вона була б відкрита для змін, але відчувається, що я змушую направити на рішення, починаючи таким чином.
Як ще люди використовують TDD? Я міг би пережити більшу ітерацію рефакторингу, починаючи без об’єкта GameOfLife, лише примітивів та статичних методів, але це здається занадто надуманим.