Apakah kerangka kerja yang berbeda memiliki audiens target yang berbeda?
Iya. Beberapa kerangka kerja seperti Microsoft Moles , TypeMock Isolator , dan JustMock , memungkinkan Anda untuk dapat mengejek apa saja. Alat-alat tiruan ini umumnya lebih baik bagi para pengembang yang ingin menggunakannya pada kode lama yang ada karena tidak mungkin untuk mengubah seperti itu menjadi desain yang lebih dapat diuji. *
Secara tradisional, desain yang dapat diuji berarti bahwa basis kode perlu menggunakan antarmuka, kelas abstrak, metode virtual, kelas unsealed, dll. Oleh karena itu, kerangka kerja mengejek tradisional seperti Moq dan RhinoMock bekerja dengan baik dengan kode yang dikembangkan menggunakan Test Driven Development, Injeksi Ketergantungan, dan konsep lain semacam itu. Ngomong-ngomong, saya akan sangat merekomendasikan menggunakan Dependency Injection karena Anda mendapatkan lebih dari sekadar kode yang dapat diuji, tetapi juga kode yang lebih dapat dikelola.
Faktor apa yang harus saya pertimbangkan ketika memilih kerangka mana yang tepat untuk situasi saya?
- Aktivitas Pengembangan. Alat-alat seperti Moq, dan RhinoMocks sangat aktif dan populer dan dengan demikian terkini.
- Open Source Vs. Komersial . Pertimbangkan berbagai pro dan kontra yang khas untuk perbandingan ini. Biaya, Dukungan, dll ...
- Kematangan. Seberapa baru alat ini. Apakah ini dalam versi beta (seperti Microsoft Moles) atau sudah ada beberapa rilis stabil? Misalnya, saya suka Moles untuk kode lawas, tetapi ada beberapa bug yang perlu diatasi di dalamnya dan akan ada menunggu bersama sebelum diatasi (rilis berikutnya November 2011).
- Dokumentasi. Ada beberapa buku dan blog yang mencakup pengujian unit, ejekan, ejekan otomatis, dll. Selain itu seberapa bagus dokumentasi alat itu sendiri?
- Sintaks . Setiap alat memiliki cara sendiri untuk mengatakan hal yang sama. Lihat mana yang lebih cocok untuk Anda.
- Kecepatan . Alat yang menggunakan profiling CLR (TypeMock, Moles, JustMock), bisa jauh lebih lambat daripada yang tradisional (Moq, RhinoMocks). Penalti kecepatan ini mungkin menjadi masalah karena Anda mengumpulkan banyak tes unit. Aturan praktisnya adalah jika tes membutuhkan waktu lebih dari 1/10 detik, ini terlalu lambat.
- Dukungan Masyarakat . Apakah pengembang lain menulis alat lain yang memperluas (atau bekerja sebagai pujian) ke alat mengejek? Ada proyek Moq.Contrib yang menambahkan kemampuan Auto- mocking ke Moq (yang membantu mempercepat waktu penulisan tes). Lebih baik lagi, ada AutoFixture , AutoFixture.AutoMoq, AutoFixture.AutoRhinoMocks, yang juga memungkinkan untuk Auto-mocking, ditambah pembuatan variabel anonim.
* Lihat Bekerja Secara Efektif dengan Legacy Code , untuk cara bagaimana perlahan-lahan memperbaiki kode tanpa menguji kode yang dapat digunakan dengan alat pengujian tradisional (dan ejekan).