Kecuali Anda akan menulis kode tanpa mengujinya, Anda akan selalu dikenai biaya pengujian.
Perbedaan antara memiliki unit test dan tidak memilikinya adalah perbedaan antara biaya penulisan tes dan biaya menjalankannya dibandingkan dengan biaya pengujian dengan tangan.
Jika biaya penulisan tes unit adalah 2 menit dan biaya menjalankan tes unit praktis 0, tetapi biaya pengujian kode secara manual adalah 1 menit, maka Anda impas ketika Anda telah menjalankan tes dua kali.
Selama bertahun-tahun saya berada di bawah kesalahpahaman bahwa saya tidak punya cukup waktu untuk menulis unit test untuk kode saya. Ketika saya menulis tes, itu adalah hal yang menggembung, hal-hal berat yang hanya mendorong saya untuk berpikir bahwa saya seharusnya hanya menulis unit test ketika saya tahu mereka diperlukan.
Baru-baru ini saya didorong untuk menggunakan Test Driven Development dan saya menemukan itu sebagai wahyu yang lengkap. Saya sekarang sangat yakin bahwa saya tidak punya waktu untuk tidak menulis tes unit .
Dalam pengalaman saya, dengan mengembangkan dengan pengujian dalam pikiran Anda berakhir dengan antarmuka yang lebih bersih, kelas & modul yang lebih fokus dan umumnya lebih SOLID , kode diuji.
Setiap kali saya bekerja dengan kode lama yang tidak memiliki tes unit dan saya harus menguji sesuatu secara manual, saya terus berpikir "ini akan jauh lebih cepat jika kode ini sudah memiliki unit test". Setiap kali saya harus mencoba dan menambahkan fungsionalitas unit test ke kode dengan kopling tinggi, saya terus berpikir "ini akan jauh lebih mudah jika telah ditulis dengan cara de-coupled".
TL; versi DR :
Tulis tes ketika biaya menulis tes, ditambah biaya menjalankannya sebanyak yang Anda butuhkan cenderung lebih kecil dari biaya pengujian secara manual sebanyak yang Anda butuhkan.
Ingat juga bahwa jika Anda menggunakan TDD, biaya tes menulis cenderung turun saat Anda menjadi lebih baik, dan kecuali jika kode itu benar-benar sepele, Anda mungkin akan berakhir menjalankan tes Anda lebih sering daripada yang Anda harapkan.