Ketika perubahan kode besar terjadi (set POJO baru, refactoring aplikasi utama, dll.), Tes unit cenderung dikomentari alih-alih dikerjakan ulang.
Saya selalu berusaha untuk menjaga refactoring dan mengubah fungsi secara terpisah. Ketika saya perlu melakukan keduanya, saya biasanya melakukan refactoring terlebih dahulu.
Ketika kode refactoring tanpa mengubah fungsionalitas, unit test yang ada diharapkan untuk membantu memastikan bahwa refactoring tidak merusak fungsionalitas secara tidak sengaja. Jadi untuk komitmen semacam itu, saya akan mempertimbangkan menonaktifkan atau menghapus unit test sebagai tanda peringatan utama. Setiap pengembang yang melakukannya harus diberitahu untuk tidak melakukannya ketika kode sedang ditinjau.
Ada kemungkinan bahwa perubahan yang tidak mengubah fungsi masih menyebabkan tes unit gagal karena tes unit cacat. Jika Anda memahami kode yang Anda ubah maka penyebab kegagalan unit test tersebut biasanya langsung jelas dan mudah diperbaiki.
Sebagai contoh jika suatu fungsi mengambil tiga argumen, tes unit yang mencakup interaksi antara dua argumen pertama untuk fungsi tersebut mungkin tidak hati-hati untuk memberikan nilai yang valid untuk argumen ketiga. Kelemahan dalam pengujian unit ini dapat diekspos oleh refactoring dari kode yang diuji, tetapi mudah untuk diperbaiki jika Anda memahami apa yang seharusnya dilakukan oleh kode dan apa yang diuji oleh unit test.
Saat mengubah fungsionalitas yang ada, biasanya perlu juga mengubah beberapa tes unit. Dalam kasus ini, unit test membantu memastikan bahwa kode Anda mengubah fungsionalitas seperti yang dimaksudkan dan tidak memiliki efek samping yang tidak diinginkan.
Saat memperbaiki bug atau menambahkan fungsionalitas baru, seseorang biasanya perlu menambahkan lebih banyak tes unit. Bagi mereka itu dapat membantu untuk melakukan pengujian unit terlebih dahulu dan melakukan perbaikan bug atau fungsionalitas baru nanti. Itu membuatnya lebih mudah untuk memverifikasi bahwa tes unit baru tidak lulus dengan kode yang lebih lama tetapi lulus dengan kode yang lebih baru. Pendekatan ini tidak sepenuhnya tanpa kelemahan, jadi ada juga argumen yang mendukung melakukan pengujian unit baru dan pembaruan kode secara bersamaan.
Waktu lebih baik dihabiskan untuk tes integrasi yang mencakup kasus penggunaan, yang membuat tes dengan cakupan yang lebih kecil kurang / tidak sama sekali penting.
Ada beberapa unsur kebenaran dalam hal ini. Jika Anda bisa mendapatkan cakupan lapisan bawah tumpukan perangkat lunak dengan tes yang menargetkan lapisan yang lebih tinggi dari tumpukan perangkat lunak, tes Anda mungkin lebih bermanfaat ketika melakukan refactoring kode.
Saya tidak berpikir Anda akan menemukan kesepakatan tentang perbedaan yang tepat antara tes unit dan tes integrasi. Dan saya tidak akan khawatir jika Anda memiliki test case yang satu pengembang memanggil unit test dan yang lainnya memanggil test integrasi, selama mereka dapat setuju bahwa itu adalah case test yang bermanfaat.