Pastinya. Beberapa orang mengatakan "tes apa pun lebih baik daripada tidak sama sekali". Saya sangat tidak setuju - tes yang ditulis dengan buruk menghambat waktu pengembangan Anda, dan Anda akhirnya menghabiskan waktu berhari-hari untuk memperbaiki tes yang "rusak" karena mereka bukanlah tes unit yang baik. Bagi saya saat ini, dua hal yang saya fokuskan untuk membuat tes saya berharga, daripada beban, adalah:
Maintabilitas
Anda harus menguji hasilnya ( apa yang terjadi), bukan metodenya ( bagaimana itu terjadi). Pengaturan Anda untuk pengujian harus dipisahkan dari implementasi mungkin: hanya mengatur hasil untuk panggilan layanan dll yang benar-benar diperlukan.
- Gunakan kerangka mengejek untuk memastikan tes Anda tidak bergantung pada apa pun yang eksternal
- Pilih bertopik di atas tiruan (jika kerangka Anda membedakannya) sedapat mungkin
- Tidak ada logika dalam tes! Seandainya, switch, untuk masing-masing, case, try-catches dll. Semuanya tidak boleh dilakukan, karena mereka dapat memasukkan bug ke dalam kode tes itu sendiri
Keterbacaan
Tidak apa-apa untuk memungkinkan pengulangan yang lebih banyak dalam pengujian Anda, yang biasanya tidak Anda izinkan dalam kode produksi Anda, jika itu membuatnya lebih mudah dibaca. Seimbangkan ini dengan hal-hal pemeliharaan di atas. Jelaskan secara eksplisit apa yang dilakukan tes ini!
- Cobalah untuk mempertahankan gaya "atur, bertindak, tegaskan" untuk tes Anda. Ini memisahkan pengaturan Anda dan harapan skenario, dari tindakan yang dilakukan, dan hasilnya dinyatakan.
- Pertahankan satu pernyataan logis per tes (jika nama tes Anda memiliki "dan" di dalamnya, Anda mungkin perlu memecahnya menjadi beberapa tes)
Sebagai kesimpulan, Anda harus sangat peduli dengan tes "bau" - mereka dapat berakhir hanya membuang-buang waktu Anda, tidak memberikan nilai.
Anda mengatakan:
Unit testing biasanya membutuhkan berbagai "smelly hacks" seperti fungsi stubbing.
Sepertinya Anda bisa melakukannya dengan membaca beberapa teknik Unit Testing, seperti menggunakan kerangka Mocking, untuk membuat hidup Anda lebih mudah. Saya sangat merekomendasikan The Art of Unit Testing , yang mencakup hal-hal di atas dan banyak lagi. Saya menemukan itu mencerahkan setelah berjuang dengan tes "bau" yang ditulis dengan buruk, tidak terpelihara untuk waktu yang lama. Ini adalah salah satu investasi waktu terbaik yang saya buat tahun ini!