Apakah ada aplikasi open source yang dikembangkan menggunakan pengembangan yang didorong oleh tes yang berfungsi sebagai model seberapa baik pengujian unit harus bekerja?
Saya lebih suka melihat contoh dalam C # dan .NET. (Perhatikan bahwa saya menyebutkan aplikasi, bukan hanya perpustakaan.)
Saya seorang programmer tingkat menengah yang benar-benar ingin percaya dan mempraktikkan TDD. Aplikasi yang saya kerjakan dalam pekerjaan sehari-hari saya cukup rumit - sekitar 1 juta baris kode - dan saya ingin memperkenalkan lebih banyak pengujian unit. Kami memiliki beberapa unit test di tempat, tetapi upaya saya di TDD dan dengan mengerjakan kode yang sudah diuji belum menggembirakan.
Dalam pengalaman saya yang diakui terbatas, TDD tampaknya mendorong banyak kompleksitas dalam nama decoupling. Bit aplikasi yang sulit untuk diuji - dan yang secara kebetulan cenderung kritis - terdorong keluar ke pinggiran, ke ranah tes integrasi yang mungkin atau mungkin tidak pernah ditulis. (Saya memikirkan tersangka yang biasa ada di sini, mengakses sistem file, menghidrasi objek dari database, panggilan web tidak sinkron, dll.)
Kode yang sedang diuji cenderung melibatkan banyak kolaborasi di antara objek, dan mungkin beberapa logika aliran sederhana, yang semuanya terjadi dalam memori dan yang bisa dibilang dapat ditulis dengan cara yang lebih sederhana, lebih mudah dimengerti jika semuanya tidak harus dipisahkan secara total. untuk pengujian.
Saya mengerti teknik untuk mengejek dependensi dan semacamnya, tetapi dalam pengalaman saya banyak menggunakan mengejek mengarah pada tes yang sangat rapuh. Jika naluri pertama saya setelah melihat banyak tes menjadi merah adalah, "Hebat, sekarang saya harus memperbaiki semua ejekan," maka tes saya telah menjadi hambatan daripada jaring pengaman.
Saya mencoba untuk melewati penghalang mental ini, dan sebagai bagian dari itu saya membaca buku Michael Feathers, Bekerja Efektif dengan Legacy Code . Saya berharap akan menunjukkan kepada saya beberapa hal yang saya lewatkan.
Saya juga ingin mempelajari beberapa aplikasi .NET nontrivial dengan cakupan kode yang baik, mungkin sistem manajemen konten, atau aplikasi CRUD. Kerangka pengujian FitNesse yang dibicarakan Paman Bob adalah sesuatu yang mungkin akan saya lihat, tetapi akan menyenangkan untuk melihat sesuatu yang ditulis dalam bahasa yang paling saya kenal.
Setiap saran atau kata-kata bijak akan dihargai.