Diberikan, kapan, pernyataan dan keyakinan dalam implementasi

Dalam teks terakhir tentang pernyataan , sesuatu yang penting hilang dan tidak disetujui.

Apa perbedaan antara yang diberikan dan kapan dan bagaimana hal ini terkait dengan pernyataan?

Gagasan yang mendasari ini sederhana - kami ingin membatasi jumlah pernyataan.

Pertimbangkan sebuah contoh kecil.

Mari kita lewati beberapa objek yang valid ke dalam metode, memanggil layanan tambahan dan memperkaya propertinya.

Saya seharusnya tidak menulis kode sebelum ujian, jadi kami akan menganggap ini hanya untuk menyampaikan gambaran besar.

public User enrichUser(User validUser){ user.setDetails(enrichmentService.getUserDetails(validUser.getId())); return user; } 


Kami tidak tertarik dengan variasi Pengguna yang valid. Ini bukan nol, selalu memiliki id, maka itu valid. Ini adalah prasyarat, mis. diberikan.

Bahkan, kita perlu mempertimbangkan dua syarat - layanan pengayaan gagal dan sukses. Ini adalah suatu kondisi, mis. kapan

Bagaimana cara membedakan satu dari yang lain? Diberikan tidak memerlukan verifikasi kasus lain, ketika - mengharuskan. Yaitu whenValidUser membutuhkan whenInvalidUser, dan givenValidUser tidak.

Dan pengayaan == null? Jika kami menyuntikkan dependensi, maka kami dapat mempertimbangkan bagian konfigurasi ini dan tidak memikirkannya dalam pengujian. Tentu saja Ada beberapa prasyarat yang tidak masuk akal untuk didaftar.

Jika metode hanya menerima pengguna, jumlah skrip yang diperiksa meningkat. Diberikan menjadi saat.

Pertanyaan lain - tetapi, secara tegas, secara tidak sengaja atau sengaja, suatu metode dapat merusak pengguna untuk kita? Bukankah kita harus memeriksanya?

Jika kita menjawab - ya, kita harus, kita harus mengakui bahwa ini bisa menjadi beban besar. Seorang pengguna dapat memiliki lima puluh properti, dan memeriksanya di setiap metode bisa mahal. Ada pengecekan massal menggunakan pustaka, tetapi dengan melakukan ini kita kehilangan fungsi penting dari tes - untuk menentukan fungsi yang diinginkan, dan tidak mengambil kotoran di belakang kurva implementasi.

Ini dapat dibandingkan dengan keamanan bandara - seseorang memeriksa tiket, seseorang bagasi, seseorang saku, dan cek tidak digandakan pada setiap langkah. Yaitu Aset memercayai apa yang akan dilakukan implementasi, dan hanya memeriksa apa yang mereka tentukan.

Dengan demikian, prasyarat yang dibangun dengan benar mengurangi jumlah skrip dan pernyataan. Kami membuat pernyataan hanya dengan syarat.

Sayangnya, kerangka kerja seperti Mentimun tidak membuat banyak perbedaan, karena prasyarat itu sendiri tidak memeriksa untuk mereka yang Diberikan, bahwa When adalah istilah yang sama, murni deskriptif.

Dalam kasus yang lebih kompleks, sulit untuk membedakan satu dari yang lain, yang dengan sendirinya berbau. Misalnya, banyak tes dalam satu baris memeriksa hal yang sama, atau beberapa kondisi dalam tes dilupakan, atau diabaikan sebagai tidak pantas.

Ini adalah alasan bagus untuk merestrukturisasi spesifikasi dan mendesain ulang.

Source: https://habr.com/ru/post/id475612/


All Articles