Saya cukup baru untuk TDD dan saya mengalami kesulitan saat membuat tes pertama ketika datang sebelum salah satu kode implementasi. Tanpa kerangka kerja untuk kode implementasi saya bebas untuk menulis tes pertama saya namun saya ingin tetapi sepertinya selalu tercemar oleh cara berpikir Java / OO saya tentang masalah.
Sebagai contoh di Github ConwaysGameOfLifeExample saya tes pertama yang saya tulis (rule1_zeroNeighbours) saya mulai dengan membuat objek GameOfLife yang belum diimplementasikan; disebut metode set yang tidak ada, metode langkah yang tidak ada, metode get yang tidak ada, dan kemudian gunakan pernyataan.
Tes berkembang ketika saya menulis lebih banyak tes dan refactored, tapi awalnya terlihat seperti ini
@Test
public void rule1_zeroNeighbours()
{
GameOfLife gameOfLife = new GameOfLife();
gameOfLife.set(1, 1, true);
gameOfLife.step();
assertEquals(false, gameOfLife.get(1, 1));
}
Ini terasa aneh karena saya memaksakan desain implementasi berdasarkan bagaimana saya telah memutuskan pada tahap awal ini untuk menulis tes pertama ini.
Dalam cara Anda memahami TDD apakah ini ok? Saya tampaknya mengikuti prinsip-prinsip TDD / XP di mana tes dan implementasi saya berkembang seiring waktu dengan refactoring, dan jadi jika desain awal ini terbukti tidak berguna itu akan terbuka untuk berubah, tetapi rasanya seperti saya memaksakan arah pada solusi dengan memulai dengan cara ini.
Bagaimana lagi orang menggunakan TDD? Saya bisa melewati iterasi refactoring dengan memulai tanpa objek GameOfLife, hanya primitif dan metode statis tapi itu sepertinya terlalu dibuat-buat.