.NET için en iyi birim test çerçevesi nedir ve neden? [kapalı]


26

Bana öyle geliyor ki , diğer seçenekleri göz önünde bulundurmadan herkes NUnit kullanıyor . Bence bunun nedeni:

  • Herkes zaten buna aşinaydı, bu yüzden yeni bir API öğrenmek zorunda kalmayacaklar.
  • NUnit ile çalışmak için sürekli entegrasyon sunucusu ile kurulmuştur.

Bu konuda yanlış mıyım?

XUnit'i son zamanlarda kendi projelerimden birinde kullanmaya karar verdim ve çok sevdim! Bana çok daha anlamlı geliyor ve kavramsal olarak NUnit'ten ileriye doğru kesin bir adım gibi görünüyor.

Hangi çerçevenin gerçekten en iyi olduğu hakkındaki fikirleri duymak istiyorum - bunu öğrenmek zorunda kalmamak veya otomatik testinizi yeniden yapılandırmak zorunda kalmamak.


6
Lütfen en iyisini tanımlayın. En ucuz? kodlaması kolay mı? Test başına en az kod satırı? stackoverflow.com/questions/680298/…
Amir Rezaei

Üzgünüm, en güçlü, kararlı ve sezgisel olanı kastettim. Ben görüş ve nedenlerle soruyorum neden . Cevabın hayal gücüne 'en iyisini' bıraktım, çünkü bu yönlerden hangisinin insanlar için önemli olduğunu görmek isterim.
Kimse

2
Sorunuzu yeniden değerlendirebilirseniz sorun olabilir, aksi halde bu sadece yapıcı olmayan bir "X listesi" sorusu. Yapıcı öznel sorular için altı kılavuza
ChrisF

2
“En iyi” sorulması gereken aptalca bir şey - çünkü çok nadiren tek bir en iyisi var çünkü kısmen bağlama bağlı ve kısmen çünkü bir dereceye kadar öznel olduğu için kaçınılmaz olarak.
Murph

10
Murph. İlk olarak, bu site öznel sorular içindir. İkincisi, görüşlerini istiyorum, bu yüzden başkalarının 'en iyi' yorumunu görmek istiyorum. Ve bana aptal deme.
Hiç kimse

Yanıtlar:


15

MSTest

Şahsen MSTest kullanıyorum. NUnit gerçekten çok güzel, ama VS2010'da, MSTest IDE'ye zaten tamamen entegre olmuş ve bunun için tam proje şablonları var. .NET için, 2010 kullanıyorsanız, o zaman bence MSTest, sadece kod kapsamı, test çalıştırıcısı ve kullanımınıza sunulan diğer araçlar için GST'nin (VS2008'deki MSTest'in eşit olduğunu sanmıyorum) gitme yolu olduğunu düşünüyorum. kutudan dışarı. (Eğer CodeRush veya R # kullanıyorsanız, o zaman diğer test çerçeveleri için gerçekten harika bir test koşucusu / aracı var)

Düzenleme: O zamandan beri XUnit'e geçtim. : D


Hem MbUnit / Galio hem de bu cevap için oy kullandım. MbUnit / Galio daha iyidir, ancak .Tr kitaplığındaki bazı kritik sınıflar için MsTest testlerini çalıştırma konusunda elleri bağlanır. Net kütüphanesi sondur ve genişletilemez. Bununla birlikte, GUI otomasyonu yapmanız gerekiyorsa, Kodlanmış Kullanıcı Arabirimi ve cuite.codeplex.com/documentation , MsTest'in üzerinde çalışır, bu nedenle yalnızca bunları kullanmak zorundasınız.
İş

2
MSTest ile ilgili sorunum, yerel olarak komut satırı testini desteklememesidir, CI üzerinden birimleri çalıştırmak istediğinizde bu bir sorun olabilir.
YarınTallen

1
Nunit şimdi tamamen VS hakkına entegre edilebilir mi?
BKSpurgeon

Evet, o. Bunun şimdi yaklaşık 6 yaşında olduğunu göz önünde bulundurarak, kişisel olarak NUnit'e ve sonra şimdi XUnit'e geçtim. Hem (hem de diğerleri), MSTest ile aynı VS işlevselliğini aydınlatmak için adaptör görevi gören nuget paketlerine sahiptir. Açıkçası, MSTest muhtemelen bu noktada listenin altındadır. XUnit veya NUnit'e oy veririm. her ikisi de bugünlerde sağlam, bakımlı ve modern.
Ryan Hayes

14

Gallio / MbUnit'i birkaç yıl önce kullanmaya başladım . Ve sağladığı özellikler ve değerli taşlar, seçimimden asla pişman olmadığım kadar güçlü. Aslında şu anda Gallio OSS projesinin geliştirme ekibinin bir parçasıyım; bu yüzden daha da harika hale getirmek için katkıda bulunabilirim.

  • MbUnit , geliştirici hayatımı kolaylaştıran çok sayıda güçlü özelliğe sahiptir (sözleşme doğrulayıcıları, test fabrikaları, yapısal eşitlik karşılaştırıcısı, kombinasyon testleri, veri oluşturma çerçevesi, metin farklılığı, xml değerlendirmeleri, uzatma noktaları vb.)
  • Gallio , tüm testlerimi güzel bir raporlama aracıyla yapmak için tutarlı bir platform sunuyor. Ayrıca, MbUnit kullanmayan ve sadece bunları yürüten diğer OSS projelerindeki testleri de bir araya getirebildiğim için düşkünüm. Birçok 3. parti araç içerisindeki kesintisiz entegrasyon da uygundur (R #, PoSh, dotCover, vs.) Ve altyapının genişletilebilirliği şaşırtıcıdır (örneğin, yerel yönetilmeyen bir C ++ test çerçevesi için bir test adaptörü yazmayı yeni bitirdim) Yakında gelecek sürümlerin bir parçası olacak)

Wiki kesinlikle discover Gallio ve MbUnit v3 için iyi bir başlangıç noktasıdır. Eşik bazı bölümleri özlüyor, ancak sessizlik çoktan işe yaradı.


Yapısal eşitlik karşılaştırıcısı ve veri oluşturma çerçevesi kulağa çok hoş geliyor. MbUnit veriye dayalı test yapabilir mi - yani csv / xsd dosyalarını okuyabilir ve bunları test metodu argümanları olarak kullanabilir mi? Bu benim için xunit'in ana çekim merkezlerinden biri.
Kimse

Emin. ASAIK MbUnit, .NET'e veriye dayalı testler sunan ilk test çerçevesidir. Test parametrelerini dahili ([Satır], [Sütun], vb.) Ve harici ([CsvData], [XmlData], vb.) Veri kaynaklarına bağlayabilir. Burada daha fazla ayrıntı: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin

Gallio ve visual studio ile yaşadıkları performans sorunlarını çözdüler mi? Anlaşma bizim için katil oldu.
Wyatt Barnett

Küçük bir şirket için çalışırken MbUnit kullandım ve harikaydı! Daha sonra MsTest'i kullandım çünkü yapmak zorunda kaldım ve sorun yoktu. Hala proje ayarlarını yapılandırmak yerine açık kod yazmayı tercih ediyorum. Kurumsal destek MSTest’e yardımcı oluyor. Tasarımın çirkin veya güzel olmasına rağmen, MSFT'den çıkanların iyi bir şekilde test edileceğini biliyorsunuz.
İş

@YannTrevin Gallio / MbUnit'in durumu nedir? Google Kod deposuna baktım ve son zamanlarda herhangi bir değişiklik olmadığı görülüyor. Geliştirme başka bir yerde mi oluyor yoksa proje durdu mu?
Wesley Wiser,

9

Birini seçip kullanmak, buradaki belki de en önemli adımdır.

Şahsen birkaç nedenden dolayı NUnit'i seçerdim . İlk ve en önemlisi takım desteğidir. Orada bir olan ücretsiz eklenti Visual Studio 2010 için , ve tüm önemli 3. parti eklentileri bunu destekleyecek. Her tek yapı sistemi, test kapsamı yardımcı programı ve CI sunucusu bunu destekler. Bir eklenti olmadan birçok durumda. Kod seviyede, bu noktada herhangi bir senaryo hakkında sadece işleyebilir - Veri güdümlü testleri, miras, soyut test sınıfları, genel test sınıfları, kurulum, Bir dereceye kadar, vb yıkmak Elimizdeki xUnit NUnit de var çünkü zengin özellik ve güçlü.

NUnit'in ötesinde, Yann'ın belirttiği gibi MBUnit + Gallio için oldukça iyi bir tartışma yapabileceğinizi düşünüyorum - bu çok sağlam bir çerçeve. Mümkünse kaçınmanız gereken, birkaç ölümcül kusur olan IMHO olan MSTest olacaktır. Kalıtım eksikliği ve profesyonel veya daha iyi görsel stüdyo SKU'larına bağımlılık gibi test sınıflarınızdaki kısıtlamalardan bazılarıdır. Testleri çalıştırmak için görsel stüdyo gerektiren kurulum sunucusu üzerine kuruludur.


0

Bunun bir nedeni, NUNIT'in xUnit'ten daha endüstri standardı haline gelmesidir. Ama şahsen ben xunit seviyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.