Saya akan memulai proyek baru di tempat kerja dan ingin masuk ke unit testing. Kami akan menggunakan VS 2008, C #, dan hal-hal ASP.NET MVC. Saya melihat menggunakan NUnit atau proyek uji bawaan yang dimiliki VS2008, tetapi saya terbuka untuk meneliti saran lain. Apakah satu sistem lebih baik dari yang lain atau mungkin lebih mudah digunakan / dipahami daripada yang lain? Saya mencari untuk mengatur proyek ini sebagai semacam "praktik terbaik" untuk upaya pengembangan kami ke depan.
Terima kasih atas bantuan dan sarannya !!
c#
asp.net-mvc
visual-studio-2008
unit-testing
nunit
Ryan Skarin
sumber
sumber
Kerangka kerja unit-testing sebenarnya tidak terlalu penting, karena Anda dapat mengonversi kelas uji dengan file proyek terpisah dan kompilasi bersyarat (seperti ini, VS-> NUnit):
Plugin TestDriven.Net bagus dan tidak terlalu mahal ... Dengan hanya VS2008 Anda harus menemukan tes dari kelas tes atau daftar tes. Dengan TestDriven.Net Anda dapat menjalankan tes Anda langsung dari kelas yang Anda uji. Bagaimanapun, uji unit harus mudah dipelihara dan dekat dengan pengembang.
sumber
Manfaat / perubahan Kerangka Pengujian Unit Built-in VS2008
sumber
Saya telah menggunakan NUnit selama 2 tahun. Semua baik-baik saja tetapi saya harus mengatakan bahwa sistem Unit di VS cukup bagus karena ada di dalam Gui dan dapat lebih mudah melakukan tes untuk fungsi pribadi tanpa harus dipusingkan. Juga, Unit Testing VS memungkinkan Anda melakukan peliputan dan hal-hal lain yang tidak bisa dilakukan oleh NUnit saja.
sumber
Satu gangguan kecil dari kerangka pengujian Visual Studio adalah bahwa hal itu akan membuat banyak file uji coba yang cenderung mengacaukan direktori proyek Anda - meskipun ini bukan masalah besar.
Juga, jika Anda tidak memiliki plugin seperti TestDriven.NET, Anda tidak dapat men-debug unit tes NUnit Anda (atau MbUnit, xUnit, dll.) Dalam lingkungan Visual Studio, seperti yang Anda bisa dengan kerangka kerja pengujian Microsoft VS, yang dibangun di dalamnya.
sumber
Agak di luar topik, tetapi jika Anda menggunakan NUnit, saya dapat merekomendasikan penggunaan ReSharper - ini menambahkan beberapa tombol ke VS UI yang membuatnya jauh lebih mudah untuk dijalankan dan men-debug tes dari dalam IDE.
Ulasan ini sedikit kedaluwarsa, tetapi menjelaskan ini secara lebih rinci:
http://codebetter.com/blogs/paul.laudeman/archive/2006/08/15/Using-ReSharper-as-an-essential-part-of-your-TDD-toolkit.aspx
sumber
XUnit adalah kemungkinan lain untuk proyek greenfield. Mungkin ada sintaks yang lebih intuitif, tetapi tidak benar-benar kompatibel dengan kerangka kerja lain.
http://www.codeplex.com/xunit
sumber
Daging sapi utama saya dengan tes unit VS lebih dari NUnit adalah penciptaan tes VS cenderung menyuntikkan banyak kode yang dihasilkan untuk akses anggota pribadi.
Beberapa mungkin ingin menguji metode pribadi mereka, beberapa mungkin tidak, itu topik yang berbeda.
Kekhawatiran saya adalah ketika saya sedang menulis unit test mereka harus sangat dikontrol jadi saya tahu persis apa yang saya uji dan bagaimana saya mengujinya. Jika ada kode yang dibuat secara otomatis, saya kehilangan sebagian dari kepemilikan itu.
sumber
Saya telah melakukan beberapa TDD menggunakan keduanya dan (mungkin saya sedikit bodoh) nUnit tampaknya jauh lebih cepat dan lebih mudah digunakan untuk saya. Dan ketika saya banyak bicara, saya sangat berarti.
Di MS Test, ada terlalu banyak atribut, di mana-mana - kode yang melakukan tes sebenarnya adalah garis kecil yang dapat Anda baca di sana-sini. Kekacauan besar. Dalam nUnit, kode yang melakukan pengujian hanya mendominasi atribut, seperti yang seharusnya.
Juga, di nUnit, Anda hanya perlu mengklik tes yang ingin Anda jalankan (hanya satu? Semua tes yang mencakup kelas? Perakitan? Solusi?). Satu klik. Dan jendelanya jernih dan besar. Anda mendapatkan lampu hijau dan merah yang jelas. Anda benar-benar tahu apa yang terjadi dalam satu pandangan.
Dalam VSTS, daftar tes macet di bagian bawah layar, itu kecil dan jelek. Anda harus melihat dua kali untuk mengetahui apa yang terjadi. Dan Anda tidak dapat menjalankan hanya satu tes (well, saya belum mengetahuinya!).
Tapi saya mungkin salah, tentu saja - saya baru saja membaca sekitar 21 posting blog tentang "Bagaimana cara melakukan TDD sederhana menggunakan VSTS". Saya harus membaca lebih lanjut, Anda benar.
Untuk nUnit, saya membacanya. Dan saya TDD pada hari yang sama. Dengan menyenangkan.
Ngomong-ngomong, saya biasanya suka produk Microsoft. Visual Studio benar-benar alat terbaik yang bisa dibeli pengembang - tetapi TDD dan manajemen Item Kerja dalam Visual Studio Team System benar-benar menyebalkan.
Semua yang terbaik. Sylvain.
sumber
Saya mendapat pesan bahwa "struktur file NUnit lebih kaya daripada VSTest" ... Tentu saja jika Anda lebih suka struktur file NUnit, Anda dapat menggunakan solusi ini dengan cara lain, seperti ini (NUnit-> VS):
Atau konversi lain ... :-) Ini menggunakan di sini hanya alias ke kompiler.
sumber
Pertama saya ingin memperbaiki pernyataan yang salah: Anda dapat menjalankan msTest di luar visual studio menggunakan baris perintah. Meskipun beberapa alat CI seperti TeamCity memiliki dukungan yang lebih baik untuk NUnit (mungkin akan berubah karena msTest menjadi lebih populer). Dalam proyek saya saat ini, kami menggunakan keduanya dan satu-satunya perbedaan besar yang kami temukan adalah bahwa mstest selalu berjalan sebagai 32bit sedangkan NUnit berjalan sebagai uji 32bit atau 64bit yang hanya penting jika kode Anda menggunakan kode asli yang bergantung pada 32/64.
sumber
Saya mulai dengan MSTest tetapi beralih karena satu alasan sederhana. MSTest tidak mendukung Warisan Metode Uji dari majelis lain.
Saya benci gagasan untuk menulis tes yang sama beberapa kali. Terutama pada proyek besar di mana metode pengujian dapat dengan mudah mencapai 100-an tes.
NUnit benar-benar melakukan apa yang saya butuhkan. Satu-satunya hal yang hilang dengan NUnit adalah Visual Studio Addin yang telah dapat menampilkan status Merah / Hijau (Seperti VSTS) dari setiap tes.
sumber
.NET Framework Framework Advice dan paket .NET Unit Testing? .
sumber
Jika Anda mempertimbangkan MSTest atau nUnit, maka saya sarankan Anda melihat mbUnit. Alasan saya adalah
Saya awalnya mengambil mbUnit karena fungsinya [RowTest ....], dan saya belum menemukan satu alasan pun untuk kembali. Saya memindahkan semua suite tes aktif saya dari nUnit, dan tidak pernah melihat ke belakang. Sejak itu saya telah mengonversi dua tim pengembangan berbeda ke manfaatnya.
sumber
Sejauh yang saya tahu, ada empat kerangka kerja yang tersedia untuk pengujian unit dengan .NET hari ini
NUnit selalu berada di depan tetapi kesenjangan telah ditutup pada sekitar setahun terakhir. Saya masih lebih suka NUnit sendiri, terutama karena mereka menambahkan antarmuka yang lancar beberapa waktu lalu yang membuat tes sangat mudah dibaca.
Jika Anda baru memulai dengan unit yang mengujinya, mungkin tidak ada banyak perbedaan. Setelah Anda mencapai kecepatan Anda akan berada dalam posisi yang lebih baik untuk menilai kerangka mana yang terbaik untuk kebutuhan Anda.
sumber
Saya tidak suka kerangka kerja pengujian VS bawaan karena memaksa Anda untuk membuat proyek terpisah sebagai lawan memiliki tes Anda sebagai bagian dari proyek yang Anda uji.
sumber
MSTest pada dasarnya NUnit sedikit dikerjakan ulang, dengan beberapa fitur baru (seperti pengaturan perakitan dan teardown, tidak hanya fixture dan tingkat pengujian), dan kehilangan beberapa bit terbaik (seperti sintaks kendala 2,4 baru). NUnit lebih matang, dan ada lebih banyak dukungan dari vendor lain; dan tentu saja karena selalu gratis (sedangkan MSTest hanya membuatnya menjadi versi Profesional 2008, sebelum itu itu cara SKU lebih mahal), sebagian besar proyek ALT.NET menggunakannya.
Karena itu, ada beberapa perusahaan yang sangat enggan untuk menggunakan sesuatu yang tidak memiliki label Microsoft di atasnya, dan terutama kode OSS. Jadi memiliki kerangka kerja pengujian MS resmi mungkin menjadi motivasi bahwa perusahaan-perusahaan perlu mendapatkan pengujian; dan mari kita jujur, itu pengujian yang penting, bukan alat apa yang Anda gunakan (dan menggunakan kode Tuomas Hietanen di atas, Anda hampir dapat membuat kerangka pengujian Anda dapat dipertukarkan).
sumber
SetUp
danTearDown
atribut: jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.htmlDengan rilis dalam .NET 4.0 dari sistem Kontrak Kode dan ketersediaan pemeriksa statis , Anda perlu secara teoritis menulis lebih sedikit kasus uji dan alat seperti Pex akan membantu mengidentifikasi kasus-kasus itu. Terkait hal ini dengan diskusi yang sedang berlangsung, jika Anda perlu melakukan lebih sedikit dengan tes unit Anda karena kontrak Anda menutupi ekor Anda, maka mengapa tidak langsung saja menggunakan potongan bawaan karena itu adalah salah satu ketergantungan yang kurang untuk dikelola. Hari-hari ini, saya semua tentang kesederhanaan. :-)
Lihat juga:
sumber
Saya lebih suka menggunakan kerangka uji MS kecil, tetapi untuk saat ini saya tetap dengan NUnit. Masalah dengan MS umumnya (untuk saya)
Peringatan - Jika saya menguji situs aspx, saya pasti akan menggunakan MS - Jika saya mengembangkan solo, juga MS akan baik-baik saja - Jika saya memiliki keterampilan terbatas dan tidak dapat mengkonfigurasi NUnit :)
Saya merasa jauh lebih mudah untuk hanya menulis tes saya dan menjalankan NUnitGUI atau salah satu ujung depan lainnya (testDriven jauh jauh jauh lebih mahal). Menyiapkan debugging dengan versi commandline juga cukup mudah.
sumber