Kami membuang banyak waktu pada tes integrasi terakhir kami pada bug yang saya pikir seharusnya ditemukan dalam pengujian unit. Masalahnya adalah bahwa antarmuka / layanan yang kami panggil berperilaku berbeda dari yang kami harapkan dan uji unit tidak menemukan masalah ini karena kami mengejek antarmuka tersebut untuk pengujian unit dan tiruan kami tentu saja berdasarkan interpretasi yang keliru tentang apa yang akan antarmuka melakukan. Sekarang saya bisa sedikit marah pada rekan kerja kami yang menyediakan antarmuka, karena deskripsi / spesifikasi mereka (komentar JavaDoc singkat) adalah ambigu dan berkontribusi pada kesalahpahaman kami. Di sisi lain, saya berpikir bahwa masalahnya bisa dihindari jika rekan kerja yang sama telah memberikan implementasi tiruan dari antarmuka mereka yang dapat kita sebut dalam pengujian unit kami.
Sekarang, apa praktik terbaik dalam mengatur penciptaan objek tiruan di antara tim yang menyediakan dan menggunakan antarmuka bersama? Apa pengalaman anda
sumber
Jawaban:
Idealnya, ya.
Siapa pun yang menulis kode yang digunakan orang lain tidak terikat untuk memberikan apa pun yang melengkapi kode tersebut. Namun, jika Anda ingin orang menggunakan kode Anda (dan semua orang harus selalu menulis dengan mentalitas ini), dokumentasi yang relevan luas - yang mungkin termasuk contoh - sangat berguna.
Saya pikir saya tidak pernah membaca dokumentasi dan berpikir, "Ini bodoh; terlalu banyak dokumentasi." Orang secara alami berbakat melompati apa yang mereka anggap tidak perlu. Kami, bagaimanapun, tidak bisa hanya membaca pikiran dan menyisipkan dokumentasi atau konsep yang belum dijelaskan. Jadi, aman untuk berasumsi: tidak ada dokumentasi yang terlalu bagus . Ini juga harus mengasumsikan bahwa orang yang membacanya sebagai bayi yang naif (yaitu membuatnya sesederhana mungkin).
Contoh tentang cara membuat instance dan menggunakan kelas selalu membantu. Meskipun, jika kode terlalu bergantung pada dokumentasi untuk dipahami, itu adalah masalah lain (terpisah).
Jawaban ini tidak boleh dilihat sebagai senjata yang akan membenarkan berteriak pada rekan kerja Anda. Itu hanyalah pedoman tentang apa yang menurut saya bermanfaat dan harus dilakukan. Meskipun ini sama sekali tidak berguna dalam situasi Anda (meskipun, saya merasa pertanyaan Anda pada dasarnya adalah kata-kata kasar), hal terbaik berikutnya yang dapat Anda lakukan adalah memimpin dengan memberi contoh dan berharap kolega Anda datang.
sumber
Tidak , tetapi penyedia juga harus memberikan kode sumber untuk unittests mereka. Membaca buku ini Anda akan mendapatkan kesan yang baik bagaimana perpustakaan harus digunakan. Mungkin Anda bisa menambahkan unittests ke tes penyedia untuk menentukan apa yang Anda harapkan dari penyedia.
Ada banyak alat / kerangka mengejek di luar sana yang dapat mengimplementasikan tiruan / rintisan / tiruan.
Meminta penyedia untuk implementasi tiruan tidak memiliki hubungan biaya / manfaat yang baik karena ia tidak dapat mengetahui bagian mana dari implementasi palsu yang hampir identik dengan implementasi nyata dan bagian mana yang hanya fasad.
Cara lain untuk mengatasi ini adalah jika penyedia menggunakan codecontracts untuk memastikan bahwa lib digunakan dengan cara yang ditentukan.
sumber
the mock should check all the preconditions
: mengapa mock perlu memeriksa apakah lib sebenarnya melakukan pemeriksaan ini. Jika Anda memiliki tes integrasi dengan lib nyata tes ini akan membawa Anda ke masalah.