Bisakah saya memeriksa keberadaan anotasi dalam tes unit?

9

Saya memiliki hierarki kelas java yang dibentuk oleh kelas Abstrak dan ekstensi N-nya. Di kelas abstrak saya memiliki metode yang dijelaskan dengan penjelasan @Remove. Meskipun kami tidak akan mendapatkan pengecualian tidak akan gagal cepat jika penjelasan ini dihapus, kami mungkin keluar dari pengecualian memori, jadi saya ingin memastikan bahwa kami memperhatikan secepat mungkin jika penjelasan ini menghilang di beberapa refactoring.

Saya mencoba membuat GUTS (tes unit bagus), jadi saya pikir saya bisa mendokumentasikan "persyaratan teknis" ini dalam pengujian saya, dengan test case yang menyatakannya.

Tapi ini bukan fitur, itu sebagai detail implementasi dan tidak terkait dengan perilaku metode (metode ini bisa kosong, tetapi harus ada dan harus dijelaskan).

Apakah boleh membuat tes untuk itu atau ada cara lain untuk memeriksa keberadaan anotasi ini?

JSBach
sumber
1
Apakah Anda bertanya bagaimana melakukannya, atau apakah melakukannya merupakan praktik rekayasa perangkat lunak yang baik? Jawaban untuk yang terakhir adalah ya. Pengujian memverifikasi kualitas basis kode Anda; mereka tidak perlu memeriksa perilaku saat ini . Tidak apa-apa untuk melakukan tes yang memverifikasi kondisi yang dimaksudkan untuk menumbuhkan perilaku baik di masa depan .
Kilian Foth

Jawaban:

5

Ya buat tes unit. Anda mengatakan bahwa jika anotasi dihapus maka Anda dapat keluar dari bug memori yang sedang diproduksi. Itu akan menjadi bug pembunuh. Membiarkan itu terjadi karena beberapa gagasan bahwa tes entah bagaimana harus dibatasi adalah tidak produktif. Tes harus memeriksa kebenaran dalam semua pengertian. Semakin cepat Anda mendeteksi masalah yang mungkin semakin baik sehingga memiliki unit test dan gagal membangun CI adalah cara yang solid untuk mencegah bug. Mencoba menemukan mekanisme lain untuk mencegah masuknya bug semacam itu sepertinya tidak ada artinya. Setiap pengembang baru harus diberi penjelasan tentang cara menangani "kasus khusus" dari tidak ada uji kebenaran fungsional. Kemungkinan besar itu bukan penggunaan waktu pengembang yang baik.

Edit Tim yang melakukan BDD cenderung memisahkan tes fungsional bisnis dari tes teknis seperti tes kinerja. Biasanya tim memiliki berbagai jenis tes termasuk tes integrasi yang jarang dilakukan dibandingkan tes logika bisnis inti mereka. Ini biasanya dilakukan dengan membangun profil sehingga pengembang dalam aliran mereka dapat menjalankan tes logika bisnis cepat sering dan tes integrasi lebih lambat sebelum mereka melakukan kode. CI build akan menjalankan semua tes.

simbo1905
sumber
2

Ketika fungsi kritis diimplementasikan menggunakan teknik deklaratif seperti ini, saya cenderung lebih suka menggunakan tes integrasi yang mencakup bagian dari kerangka kerja yang mengakui deklarasi. Ini melindungi Anda dari perubahan perilaku kerangka kerja, kesalahpahaman tentang efek deklarasi, dan sebagainya. Cukup menguji keberadaan anotasi tidak menjamin perilaku tertentu.

Jules
sumber
Hai! Ini menarik, bagaimana Anda akan memeriksa perilaku anotasi @remove, misalnya?
JSBach
Sayangnya, saya tidak cukup akrab dengan EJB untuk menjawab ini - saya cenderung menghindari bekerja dengan teknologi justru karena saya merasa sulit untuk menulis tes yang bagus.
Jules
Gagasan dari anotasi ini adalah bahwa ia memberi tahu wadah bahwa kacang bisa dihilangkan. Sayangnya sulit untuk menguji perilaku ini :(
JSBach