Kadang-kadang saya akan lari ke dalam situasi di mana memperbaiki bug mengharuskan saya menghapus bagian kode. Purist TDD akan (saya berasumsi) menganjurkan menulis tes yang gagal, menghapus kode, kemudian menonton tes lulus.
Sekarang, tampaknya sangat aneh untuk melakukan tes yang menyatakan bahwa beberapa kode telah dihapus. Tentu, saya kira itu akan memastikan tidak ada yang menggali kontrol sumber dan memasukkan kode itu kembali, tetapi apakah itu layak? Jika sepadan, itu nampaknya kurang berharga daripada menulis tes untuk kode yang telah ditambahkan , kan?
unit-testing
tdd
bug
jewewlett
sumber
sumber
Jawaban:
Anda melihatnya dengan cara yang salah. Tes tidak menyatakan bahwa kode telah dihapus. Tes ini memang menegaskan fungsionalitas tertentu.
Tes tidak peduli tentang jumlah kode yang diperlukan untuk membuatnya lulus, juga tidak menyadari bahwa Anda telah menghapus beberapa kode. Nilai memiliki tes seperti itu sama dengan tes lain yang Anda buat karena bug: Anda memiliki kepercayaan terhadap tidak adanya bug ketika tes lulus dan integrasi tes ke dalam proses pembuatan memastikan Anda bahwa bug akan kemungkinan besar tidak akan diperkenalkan kembali.
Namun cara lain untuk melihatnya dari perspektif TDD adalah sebagai berikut: Ketika Anda tahu bahwa menghapus kode memperbaiki bug dan Anda kemudian bertanya-tanya apakah akan menulis tes, Anda sudah melakukan kesalahan TDD. Setelah Anda mulai mengerjakan bug, Anda harus terlebih dahulu menulis tes yang memastikan keberadaan bug dengan gagal. Hanya setelah itu Anda memperbaiki bug yang sebenarnya - yang mungkin memerlukan penghapusan kode atau tidak - dan lulus uji. Pertanyaan yang Anda ajukan bahkan tidak muncul dengan cara itu.
sumber