Apa kerangka kerja unit test terbaik untuk .NET dan mengapa? [Tutup]

26

Tampak bagi saya bahwa semua orang menggunakan NUnit tanpa mempertimbangkan opsi lain. Saya pikir ini karena:

  • Semua orang sudah mengenalnya sehingga mereka tidak perlu belajar API baru.
  • Sudah diatur dengan server integrasi berkesinambungan mereka untuk bekerja dengan NUnit.

Apakah saya salah tentang ini?

Saya memutuskan untuk menggunakan xUnit di salah satu proyek saya sendiri baru-baru ini dan saya menyukainya! Itu jauh lebih masuk akal bagi saya dan secara konseptual sepertinya merupakan langkah maju yang pasti dari NUnit.

Saya ingin mendengar pendapat tentang kerangka kerja mana yang terbaik - tidak mempertimbangkan harus mempelajarinya atau mengkonfigurasi ulang pengujian otomatis Anda.

Tak seorangpun
sumber
6
Silakan tentukan yang terbaik. Termurah kode termudah? baris kode paling sedikit per tes? stackoverflow.com/questions/680298/…
Amir Rezaei
Maaf, maksud saya paling kuat, stabil dan intuitif, apa pun. Saya meminta pendapat dan alasan mengapa . Saya meninggalkan 'yang terbaik' pada imajinasi penjawab karena saya juga ingin melihat aspek mana yang penting bagi orang.
Tidak ada yang
2
Jika Anda dapat menulis ulang pertanyaan Anda, maka mungkin OK, jika tidak, ini hanya pertanyaan "daftar X" yang tidak konstruktif. Lihat enam pedoman untuk pertanyaan subjektif yang konstruktif
ChrisF
2
"terbaik" adalah hal yang bodoh untuk ditanyakan - karena sangat jarang ada yang terbaik sebagian karena akan tergantung pada konteks dan sebagian karena itu pasti subjektif subjektif.
Murph
10
Murph. Pertama, situs ini untuk pertanyaan subjektif. Kedua saya meminta pendapat jadi saya ingin melihat orang lain 'interpretasi' terbaik ' Dan jangan panggil aku bodoh.
Tidak seorang pun

Jawaban:

15

MSTest

Saya pribadi menggunakan MSTest. NUnit benar-benar bagus, tetapi di VS2010, MSTest sudah sepenuhnya terintegrasi ke dalam IDE dan ada template proyek penuh untuk itu. Untuk .NET, jika Anda menggunakan 2010, maka saya pikir MSTest adalah cara untuk pergi (MSTest dalam VS2008 saya tidak berpikir secara normal) hanya untuk cakupan kode, test runner dan alat-alat lain yang tersedia untuk Anda keluar dari kotak. (Jika Anda menggunakan CodeRush atau R #, maka mereka memiliki pelari / alat uji yang sangat bagus untuk kerangka pengujian lainnya)

Sunting: Saya sejak pindah ke XUnit. : D

Ryan Hayes
sumber
Saya memberikan suara untuk MbUnit / Galio dan jawaban ini. MbUnit / Galio memang lebih baik, tetapi tangan mereka terikat ketika menjalankan tes MsTest, untuk beberapa kelas kritis di perpustakaan .Net itu final dan tidak dapat diperpanjang. Namun, jika Anda harus melakukan otomatisasi GUI, maka UI Berkode dan cuite.codeplex.com/documentation berfungsi di atas MsTest, jadi hanya satu HARUS menggunakannya.
Ayub
2
Masalah yang saya miliki dengan MSTest adalah bahwa ia tidak secara alami mendukung pengujian baris perintah, ini bisa menjadi masalah ketika Anda ingin menjalankan unit melalui CI.
CmdrTallen
1
Nunit sekarang sepenuhnya terintegrasi ke dalam VS kan?
BKSpurgeon
Ya itu. Mengingat ini adalah sekitar 6 tahun sekarang, saya pribadi pindah ke NUnit dan kemudian sekarang ke XUnit. Keduanya (dan lainnya) memiliki paket nuget yang berfungsi sebagai adaptor untuk menerangi fungsi VS yang sama dengan MSTest. Jujur, MSTest mungkin ada di daftar paling bawah saat ini. Saya akan memilih XUnit atau NUnit. hari ini karena keduanya solid, terpelihara, dan modern.
Ryan Hayes
14

Saya sudah mulai menggunakan Gallio / MbUnit beberapa tahun yang lalu. Dan fitur dan permata yang disediakannya begitu kuat sehingga saya tidak pernah menyesali pilihan saya. Bahkan, saya sekarang menjadi bagian dari tim pengembangan proyek OSS Gallio; jadi saya bisa berkontribusi untuk membuatnya lebih hebat.

  • MbUnit memiliki banyak fitur canggih yang hanya membuat masa pakai pengembang saya lebih mudah (kontrak verifier, pabrik pengujian, pembanding kesetaraan struktural, pengujian kombinatorial, kerangka kerja pembuatan data, pembedaan teks, pernyataan xml, titik ekstensi, dll.)
  • Gallio menyediakan platform yang konsisten untuk menjalankan semua pengujian saya dengan perangkat pelaporan yang bagus. Saya juga menyukai kenyataan bahwa saya dapat mengintegrasikan tes dari proyek OSS lain yang tidak menggunakan MbUnit dan hanya menjalankannya. Integrasi yang mulus dalam banyak alat pihak ke-3 juga nyaman (R #, PoSh, dotCover, dll.) Dan ekstensibilitas infrastrukturnya luar biasa (misalnya, saya baru saja selesai menulis adaptor uji untuk kerangka kerja pengujian C ++ asli yang tidak dikelola. . Ini akan menjadi bagian dari rilis mendatang)

The wiki tentu titik yang baik mulai menemukan Galio dan MbUnit v3. Itu masih merindukan beberapa bab tapi tenang sudah berguna.

Yann Trevin
sumber
Komparator kesetaraan struktural dan kerangka kerja pembuatan data terdengar hebat. Bisakah MbUnit melakukan pengujian berbasis data - yaitu membaca file csv / xsd dan menggunakannya sebagai argumen metode pengujian? Itu salah satu daya tarik utama xunit bagi saya.
Tidak seorang pun
Yakin. ASAIK MbUnit adalah kerangka pengujian pertama untuk .NET untuk memperkenalkan pengujian berbasis data. Ia dapat mengikat parameter paremeter ke sumber data internal ([Baris], [Kolom], dll.) Dan eksternal ([CsvData], [XmlData], dll.). Lebih detail di sini: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin
Sudahkah mereka memperbaiki masalah kinerja yang mereka alami dengan Gallio dan studio visual? Adalah pembunuh kesepakatan bagi kita.
Wyatt Barnett
Saya menggunakan MbUnit ketika saya bekerja untuk sebuah perusahaan kecil dan itu hebat! Saya kemudian menggunakan MsTest karena harus, dan itu berhasil ok. Saya masih lebih suka menulis kode eksplisit daripada mengkonfigurasi pengaturan proyek. Dukungan perusahaan memang membantu MSTest. Apakah desainnya jelek atau indah, Anda tahu bahwa apa pun yang keluar dari MSFT akan diuji dengan baik.
Ayub
@ YannTrevin Apa status Gallio / MbUnit? Saya melihat repositori Google Code dan sepertinya tidak ada perubahan terbaru. Apakah pengembangan terjadi di tempat lain atau proyek terhenti?
Wesley Wiser
9

Memilih satu dan menggunakannya mungkin adalah langkah paling penting di sini.

Secara pribadi saya akan memilih NUnit karena beberapa alasan. Pertama dan terpenting adalah dukungan perkakas. Ada tambahan gratis untuk Visual Studio 2010 , dan semua plugin pihak ketiga utama mendukungnya. Setiap sistem build tunggal, utilitas cakupan uji dan server CI mendukungnya. Dalam banyak kasus tanpa plugin. Pada level kode, ia dapat menangani hampir semua skenario pada titik ini - tes yang digerakkan oleh data, pewarisan, kelas tes abstrak, kelas tes generik, pengaturan, runtuhkan, dll. Hingga taraf tertentu kami memiliki xUnit karena NUnit terlalu kaya fitur dan kuat.

Di luar NUnit, saya pikir Anda bisa membuat argumen yang cukup baik untuk MBUnit + Gallio seperti yang disebutkan oleh Yann - ini adalah kerangka kerja yang sangat solid. Yang harus Anda hindari jika mungkin adalah MSTest, yang memiliki beberapa IMHO kesalahan fatal. Kelemahan menjadi beberapa kendala pada kelas tes Anda, seperti tidak ada warisan, dan ketergantungan pada profesional atau SKU studio visual yang lebih baik. Termasuk membutuhkan studio visual yang diinstal pada server build untuk menjalankan tes.

Wyatt Barnett
sumber
0

Salah satu alasannya adalah NUNIT menjadi lebih banyak standar industri daripada xUnit. Tetapi secara pribadi, saya suka xunit.

Cheung
sumber