Saya ingin memperkenalkan konsep unit test (dan pengujian secara umum) kepada rekan kerja saya; saat ini tidak ada tes sama sekali dan hal-hal diuji dengan benar-benar melakukan tugas-tugas melalui UI untuk melihat hasil yang diinginkan. Seperti yang Anda bayangkan, kode ini sangat erat digabungkan dengan implementasi yang tepat - bahkan menghasilkan kode yang harus di kelas dan digunakan kembali di seluruh sistem yang disalin dan ditempelkan di seluruh metode.
Karena perubahan persyaratan, saya telah diminta untuk memodifikasi modul yang saya tulis sebelumnya dan itu cukup longgar (tidak sebanyak yang saya inginkan, tetapi yang terbaik yang bisa saya dapatkan tanpa harus memperkenalkan banyak konsep lain). Saya telah memutuskan untuk memasukkan serangkaian unit test dengan kode revisi saya untuk "membuktikan" bahwa itu berfungsi seperti yang diharapkan dan menunjukkan bagaimana pengujian bekerja; Saya tidak mengikuti TDD sejati karena beberapa kode sudah ditulis tetapi saya berharap untuk mengikuti beberapa konsep TDD untuk kode baru yang harus saya buat.
Sekarang, mau tidak mau saya yakin saya akan ditanya mengapa saya perlu lebih dari satu atau dua hari untuk menulis kode, karena bagian dari apa yang saya akan berinteraksi dengan sudah ada dalam sistem (meskipun tanpa tes dan sangat erat digabungkan), dan ketika saya memeriksa kode saya akan ditanya apa proyek "Tes" ini. Saya dapat menjelaskan dasar-dasar pengujian, tetapi saya tidak bisa menjelaskan manfaat sebenarnya dengan cara yang dimengerti orang lain (karena mereka pikir pengujian mengharuskan Anda untuk menjalankan aplikasi sendiri, karena sering kali UI sebenarnya penting dalam menentukan apakah fitur "berfungsi" " atau tidak). Mereka tidak memahami gagasan lepas kopling (jelas terbukti oleh fakta bahwa tidak ada yang longgar digabungkan; bahkan tidak ada antarmuka di luar kode yang saya tulis), jadi mencoba menggunakannya sebagai keuntungan mungkin akan memberi saya "Hah?" jenis tampilan, dan sekali lagi saya tidak bisa menjadi longgar seperti yang saya inginkan tanpa harus mengerjakan ulang beberapa modul yang ada dan mungkin memperkenalkan beberapa jenis wadah IoC, yang akan dilihat sebagai membuang-buang waktu dan bukan "pemrograman".
Adakah yang punya saran tentang bagaimana saya dapat menunjuk ke kode ini dan mengatakan "Kita harus mulai membuat unit test" tanpa keluar sebagai salah satu merendahkan (mis. "Tes menulis memaksa Anda untuk menulis kode yang baik." kecuali milik saya buruk ) atau tanpa membuatnya tampak seperti buang-buang waktu yang tidak menambah nilai nyata?