Saya ingin memulai dengan objek dalam unit test saya. Tampaknya ada banyak kerangka kerja mengejek yang baik di luar sana.
- Apakah kerangka kerja yang berbeda memiliki target audiens yang berbeda?
- Faktor apa yang harus saya pertimbangkan ketika memilih kerangka mana yang tepat untuk situasi saya?
Jawaban:
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?
* 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).
sumber
The MOQ tutorial memiliki bagian latar belakang, filosofi, dan kontroversi yang tepat di awal yang membahas ini dalam kaitannya dengan beberapa alat khusus: TypeMock Isolator, RhinoMocks, dan MOQ. Ini ditulis untuk menjelaskan Moq, jadi secara alami agak miring, tetapi saya merasa itu cukup membantu bagi saya ketika mencoba memahami beberapa perbedaan dalam kerangka kerja mengejek.
Saya menemukan tanggapan untuk utas SO ini di C # Mocking Frameworks juga berguna. Sebagian besar hanya merujuk pada satu Kerangka Mengejek yang benar-benar bermanfaat bagi pengguna, tetapi ada tanggapan dari HaraldV tentang cara yang membahas pengejek berbasis proxy dan pengejek berbasis profiler.
Saya juga dapat menemukan grafik perbandingan online. Perhatikan bahwa ini dari 2009, jadi saya tidak yakin ini mutakhir; setidaknya ada satu komentar yang menyatakan bahwa info pada TypeMock dan callback sudah usang, tetapi bagan mungkin baik untuk mengangkat masalah untuk dipertimbangkan bahkan jika Anda perlu melakukan kerja keras untuk melihat seperti apa keadaan saat ini: RhinoMocks, Moq, NMock, dan bagan perbandingan TypeMock
Ada proyek di Google Code dengan kasus uji dalam beberapa kerangka kerja ejekan untuk perbandingan kode yang mudah: ejekan-kerangka kerja-bandingkan
sumber
Di tim saya, kami memilih Microsoft Moles . Ia menang secara signifikan di # 2, # 3, dan # 4, meskipun itu kurang idiomatis daripada kebanyakan alternatif dan berada di ujung bawah di # 1.
sumber