Apa perbedaan antara NUnit dan xUnit.net ? Apa gunanya mengembangkan dua, bukan hanya satu?
Saya telah membaca bahwa xUnit sedang dikembangkan oleh penemu NUnit:
xUnit.net adalah alat pengujian unit untuk .NET Framework. Ditulis oleh penemu asli NUnit
Di samping itu:
NUnit adalah kerangka pengujian unit untuk semua bahasa .Net .. rilis produksi saat ini, versi 2.6, adalah rilis utama ketujuh dari alat pengujian unit berbasis xUnit ini
Jadi dimana kebenarannya?
Jawaban:
Pada saat menulis jawaban ini, versi NUnit terbaru adalah v3.5 dan xUnit.net adalah v2.1.
Kedua kerangka kerja itu mengagumkan, dan keduanya mendukung pengujian paralel yang berjalan (meskipun dengan cara yang berbeda). NUnit telah ada sejak 2002, ini banyak digunakan, didokumentasikan dengan baik dan memiliki komunitas yang besar, sedangkan xUnit.net lebih modern, lebih patuh pada TDD, lebih dapat diperluas, dan juga tren dalam pengembangan .NET Core. Itu juga didokumentasikan dengan baik.
Selain itu, perbedaan utama yang saya perhatikan adalah cara xUnit.net menjalankan metode pengujian. Jadi, di NUnit , kami memiliki kelas pengujian dan satu set metode pengujian di dalamnya. NUnit membuat instance baru dari kelas pengujian dan kemudian menjalankan semua metode pengujian dari instance yang sama. Sedangkan xUnit.net membuat instance baru dari kelas pengujian untuk setiap metode pengujian. . Oleh karena itu, seseorang tidak dapat menggunakan bidang atau properti untuk berbagi data di antara metode pengujian yang merupakan praktik yang buruk, karena metode pengujian kami akan bergantung satu sama lain yang tidak dapat diterima di TDD. Jadi jika Anda menggunakan xunit.net Anda dapat yakin bahwa metode pengujian Anda benar-benar terisolasi.
Jika Anda ingin membagikan beberapa data di antara metode pengujian Anda, xUnit akan membiarkan Anda melakukannya. Oleh karena itu, secara default semua metode pengujian diisolasi sepenuhnya, tetapi Anda dapat menghentikan isolasi ini dalam kasus tertentu dengan sengaja. Saya menyukai sikap ini, itulah mengapa saya lebih menyukainya.
sumber
Anda mengacaukan nama alat tunggal ( xUnit.net ) dengan nama seluruh kelas kerangka kerja pengujian unit ( xUnit , x merujuk ke bahasa / lingkungan, misalnya JUnit, NUnit, ...).
sumber
xUnit Pro:
xUnit mengikuti konsep baru dengan menghindari metode "SetUp" dan "TearDown" yang lama. Ini memaksa kita untuk menggunakan IDisposable dan konstruktor seperti yang harus kita lakukan sebagai pengembang .NET. Juga xUnit memiliki konsep berbagi konteks yang jelas.
xUnit Cons:
Ketersediaan untuk mendapatkan konteks pengujian belum diterapkan.
sumber
Satu keuntungan dari xUnit adalah menemukan tes di kelas yang berbeda; itu menjalankannya secara paralel . Ini dapat menghemat banyak waktu jika Anda memiliki banyak kasus pengujian.
Anda tentu saja dapat mematikan ini, atau mengontrol operasinya (jumlah utas, utas per kelas, tes per perakitan, dll.
Lihat contoh solusi ini dengan dua proyek uji, satu menggunakan xUnit, NUnit lainnya .
Anda dapat membaca lebih lanjut tentang pengujian paralel di xUnit di sini .
sumber