Saya telah mendengar tentang gaya London vs gaya Chicago (kadang-kadang disebut gaya Detroit) dari Test Driven Development (TDD).
Workshop Kelompok Pengguna Pemrograman Ekstrim Utah:
Gaya interaksi TDD juga disebut gaya mockist , atau gaya London setelah klub London Extreme London di mana ia menjadi populer. Biasanya kontras dengan gaya Detroit atau TDD klasik yang lebih berbasis negara.
Lokakarya ini mencakup sekolah Chicago TDD (pengujian perilaku dan triangulasi berbasis negara), dan sekolah London , yang lebih berfokus pada pengujian interaksi, mengejek dan TDD end-to-end, dengan penekanan khusus pada Desain yang Didorong oleh Tanggung Jawab dan Desain . Tell, Don't Ask, pendekatan OO yang baru-baru ini dipopulerkan kembali oleh buku tumbuh-berkembang yang sangat baik oleh Steve Freeman dan Nat Pryce yang dipandu oleh Buku Panduan.
Tulisan TDD Klasik atau "London School"? oleh Jason Gorman sangat membantu, tetapi contoh-contohnya membingungkan saya, karena dia menggunakan dua contoh berbeda alih-alih satu contoh dengan kedua pendekatan. Apa perbedaannya? Kapan Anda menggunakan setiap gaya?
Calculator
mundurmultiply
, Anda akan melihat dua tes gagal: tes buku besar, dan tes kalkulator, tetapi hanya satu tes gagal jika Anda mengejek kalkulator. Itu mungkin membuatnya lebih mudah untuk menentukan asal bug, terutama jika sistemnya kompleks.Artikel Mocks Aron't Stubs , oleh Martin Fowler adalah pengantar yang bagus untuk topik ini.
Bergantung pada gaya desain yang Anda pilih (dan prinsip-prinsip desain tempat Anda membangun program Anda), setidaknya ada dua cara untuk melihat objek:
Dalam kasus pertama, Anda tertarik pada apa yang keluar dari pemrosesan atau di mana status objek ditinggalkan setelah pemrosesan itu. Di sinilah metode seperti
assertEquals()
memasukkan gambar. Dalam hal ini, tidak masalah apa objek lain yang terlibat dalam pemrosesan, metode apa yang dipanggil, dll. Jenis verifikasi ini disebut verifikasi berbasis negara dan merupakan gaya "klasik".Dalam kasus kedua, karena sebagian besar objek bahkan tidak mengembalikan hasil apa pun (misalnya
void
metode di Jawa), Anda lebih tertarik pada bagaimana objek berkomunikasi satu sama lain dan jika mereka menyampaikan pesan yang benar dalam keadaan yang ditentukan oleh tes. Interaksi ini biasanya diverifikasi dengan bantuan kerangka kerja tiruan. Verifikasi semacam ini disebut verifikasi berbasis perilaku atau berbasis interaksi. Salah satu implikasinya adalah teknik yang disebut Behavior Driven Development, di mana Anda mengembangkan kelas dengan asumsi bahwa kolaboratornya sudah ada (meskipun mereka mungkin belum ada), sehingga Anda dapat membuat kode terhadap antarmuka mereka.Perhatikan bahwa ini bukan pilihan salah satu / atau. Anda dapat memiliki gaya desain yang memadukan kedua pendekatan untuk mendapatkan yang terbaik dari masing-masing pendekatan.
sumber