Assert First
Kapan kita harus menuliskan assert.. Assert.AreEquals(…, …..); ???
Tulislah pertama kali …
Ketika kita menuliskan test, kita sebenarnya menyelesaikan beberapa masalah sekaligus. meskipun kita tidak memikirkan bagaimana implementasinya. Diantaranya :
- Fungsionalitasnya punya siapa ?? apakah dari method yg sudah ada, modifikasi method, method baru, ataukah kelas baru
- Bagaimana dia akan dipanggil ?
- Bagaimana mengecek fungsi tersebut benar atau salah
- Bagaimana jawaban yg benar ?
- Apakah test2 lain yg muncul ?
dapat disederhanakan menjadi dua bagian bagaimana jawaban yg benar dan bagaimana cara mengeceknya. Contohnya adalah komunikasi socket. ketika kita selesai maka socket akan ditutup dan kita mendapatkan hasil bacaan string abc. nah itulah kuncinya. Apa yg kita mau ? Socket akan tertutup dan hasil pembacaan string abc. dari sanalah kita bergerak. bergeraklah dari akhir.
[Test] public void TestCompleteTransaction() { ... Assert.AreTrue(reader.IsClosed); Assert.AreEquals("abc", reply.Contents): }
setelah itu kita akan memunculkan pertanyaan lain. reply ini darimana ?? tentu saja dari socket. Nah kita naik satu langkah ke atas. sedikit demi sedikit. bergerak dari bawah ke atas.
[Test] public void TestCompleteTransaction() { ... Buffer reply = reader.Contents; Assert.AreTrue(reader.IsClosed); Assert.AreEquals("abc", reply.Contents): }
mmm.. socket dapat darimana ?? oo.. itu didapat dari hasil koneksi ke server.
[Test] public void TestCompleteTransaction() { ... Socket reader= Socket("localhost", defaultPort()); Buffer reply = reader.Contents; Assert.AreTrue(reader.IsClosed); Assert.AreEquals("abc", reply.Contents): }
yaks .. dikit lagi nyampe di puncak. Tapi sebelumnya kita buka dulu koneksi di server.
[Test] public void TestCompleteTransaction() { Server writer= Server(defaultPort(), "abc"); Socket reader= Socket("localhost", defaultPort()); Buffer reply = reader.Contents; Assert.AreTrue(reader.IsClosed); Assert.AreEquals("abc", reply.Contents): }
kita mendapat keputusan2 dan jawaban dari pertanyaan tersebut dalam hitungan detik. berikan saja apa yg dibutuhkan dan masalah selesai. biarkan testnya yg nyetir kita bikin code. ga usah repot2.
Keren bang …
Jadi bang intinya, secara singkat kalo boleh tahu TDD itu apa ya bang …