Ada cukup banyak kerangka kerja unittesting di luar sana untuk .NET. Saya menemukan perbandingan fitur kecil ini: http://xunit.github.io/docs/comparisons.html
Sekarang saya harus memilih yang terbaik untuk kita. Tapi bagaimana caranya? Apakah itu penting? Mana yang merupakan bukti paling masa depan dan memiliki momentum yang layak di belakangnya? Haruskah saya peduli fitur-fiturnya? Sementara xUnit tampaknya paling modern dan dirancang khusus untuk .NET, NUnit tampaknya menjadi salah satu yang diterima secara luas. MSTest lagi sudah terintegrasi ke dalam Visual Studio ...
Jawaban:
Saya tahu ini adalah utas lama, tetapi saya pikir saya akan mengirim suara untuk xUnit.NET . Sementara sebagian besar kerangka pengujian lain yang disebutkan semuanya hampir sama, xUnit.NET telah mengambil pendekatan yang cukup unik, modern, dan fleksibel untuk pengujian unit. Ini mengubah terminologi, sehingga Anda tidak lagi menentukan TestFixtures dan Tes ... Anda menentukan Fakta dan Teori tentang kode Anda, yang mengintegrasikan lebih baik dengan konsep apa tes dari perspektif TDD / BDD.
xUnit.NET juga sangat extensible. Kelas atribut FactAttribute dan TraitAttribute tidak disegel, dan menyediakan metode dasar yang dapat ditangguhkan yang memberi Anda banyak kendali atas bagaimana metode yang harus di-hiasi oleh atribut tersebut. Meskipun xUnit.NET dalam bentuk standarnya memungkinkan Anda untuk menulis kelas pengujian yang mirip dengan perlengkapan tes NUnit dengan metode pengujian mereka, Anda tidak terbatas pada bentuk pengujian unit ini sama sekali. Anda bebas memperluas kerangka kerja untuk mendukung spesifikasi Kepedulian / Konteks / Observasi gaya BDD, seperti yang digambarkan di sini .
xUnit.NET juga mendukung pengujian gaya fit langsung di luar kotak dengan atribut Teori dan atribut data yang sesuai. Data input yang sesuai dapat diambil dari excel, database, atau bahkan sumber data khusus seperti dokumen Word (dengan memperluas atribut data dasar.) Ini memungkinkan Anda untuk memanfaatkan platform pengujian tunggal untuk tes unit dan tes integrasi, yang bisa sangat besar dalam mengurangi ketergantungan produk dan pelatihan yang diperlukan.
Pendekatan lain untuk pengujian juga dapat diimplementasikan dengan xUnit.NET ... kemungkinannya tidak terbatas. Dikombinasikan dengan kerangka kerja mengejek yang sangat maju, Moq , keduanya menciptakan platform yang sangat fleksibel, dapat dikembangkan, dan kuat untuk menerapkan pengujian otomatis.
sumber
Trait
sebenarnya atau jika Anda dapat mengelompokkan tes yang berbeda dalam tes induk tunggal (mis. semuatests
dalam atestfixture
). nUnit menciptakan tampilan hierarki yang hebat alih-alih tampilan flat dari pengujian xUnit. Ditambah nomenklatur tidak masuk akal - fakta dan teori? Jadilah realistik! Itu lebih baik disebut tes dan data.NUnit mungkin yang paling didukung oleh alat pihak ke-3. Ini juga sudah ada lebih lama dari tiga lainnya.
Saya pribadi tidak terlalu peduli tentang kerangka kerja unit test, mengejek perpustakaan adalah IMHO jauh lebih penting (dan mengunci Anda lebih banyak). Pilih saja dan pertahankan.
sumber
Saya tidak akan pergi dengan MSTest. Meskipun mungkin bukti kerangka kerja masa depan dengan Microsoft di belakang itu bukan solusi yang paling fleksibel. Itu tidak akan berjalan sendiri tanpa hack. Jadi menjalankannya di server build selain TFS tanpa menginstal Visual Studio itu sulit. Test-runner visual studio sebenarnya lebih lambat dari Testdriven.Net + salah satu kerangka kerja lainnya. Dan karena rilis kerangka kerja ini terkait dengan rilis Visual Studio ada lebih sedikit pembaruan dan jika Anda harus bekerja dengan VS yang lebih lama Anda terikat dengan MSTest yang lebih tua.
Saya tidak berpikir itu penting banyak dari kerangka kerja lain yang Anda gunakan. Sangat mudah untuk beralih dari satu ke yang lain.
Saya pribadi menggunakan XUnit.Net atau NUnit tergantung pada preferensi rekan kerja saya. NUnit adalah yang paling standar. XUnit.Net adalah kerangka kerja paling ramping.
sumber
Pertimbangkan menambah, bukan mengganti, MSTest dengan kerangka kerja pengujian lainnya. Anda dapat menjaga integrasi Visual Studio MSTest sambil mendapatkan manfaat dari kerangka kerja pengujian yang lebih lengkap.
Sebagai contoh, saya menggunakan xUnit dengan MSTest. Tambahkan referensi ke rakitan xUnit.dll, dan lakukan sesuatu seperti ini. Ternyata, itu hanya berhasil!
sumber
Suprisingly, it just works!
Anda baru saja memanggil fungsi statis dari perakitan lain. Mengapa Anda terkejut bahwa itu berhasil? Juga jika Anda hanya perlu penegasan bahwa mengapa tidak menggunakan perakitan khusus dibuat untuk itu?Nunit tidak bekerja dengan baik dengan proyek-proyek mode campuran di C ++ jadi saya harus membatalkannya
sumber
Ini bukan masalah besar dalam skala kecil / pribadi, tetapi bisa menjadi masalah yang lebih besar dengan cepat dalam skala yang lebih besar. Majikan saya adalah toko Microsoft yang besar, tetapi tidak akan / tidak dapat membeli ke dalam Sistem Tim / TFS karena sejumlah alasan. Kami saat ini menggunakan Subversion + Orcas + MBUnit + TestDriven.NET dan bekerja dengan baik, tetapi mendapatkan TD.NET sangat merepotkan. Sensitivitas versi MBUnit + TestDriven.NET juga merupakan masalah besar, dan memiliki satu hal komersial tambahan (TD.NET) untuk hukum untuk ditinjau dan pengadaan untuk menangani dan mengelola, tidak sepele. Perusahaan saya, seperti banyak perusahaan, gemuk dan senang dengan model Berlangganan MSDN, dan itu tidak digunakan untuk menangani satu dari pengadaan untuk ratusan pengembang. Dengan kata lain, tawaran MS yang terintegrasi penuh, walaupun jelas tidak selalu terbaik, adalah nilai tambah yang signifikan menurut saya.
Saya pikir kami akan tetap dengan langkah kami saat ini karena itu bekerja dan kami sudah mengatasi punuk secara organisasi, tapi saya sungguh berharap MS memiliki penawaran yang menarik di ruang ini sehingga kami dapat mengkonsolidasikan dan menyederhanakan tumpukan dev kami sedikit.
sumber
Ini bukan masalah besar, cukup mudah untuk beralih di antara mereka. MSTest terintegrasi juga bukan masalah besar, hanya ambil testdriven.net.
Seperti kata orang sebelumnya, pilih kerangka kerja yang mengejek, favorit saya saat ini adalah Moq.
sumber