Sorunuz bana iki katlı görünüyor. Birinde iki test çerçevesini karşılaştırmak istersiniz, diğer yandan testleri kolayca uygulamak, doğal iddialara sahip olmak vb.
Tamam, öncelikle JUnit işlevsellik açısından TestNG ile yakalama oynuyor, v4 ile bazı boşlukları kapattılar, ancak bence yeterince iyi değil. Ek açıklamalar ve veri sağlayıcıları gibi şeyler TestNG'de hala çok daha iyi. Ayrıca, TestNG'nin test bağımlılığı, gruplaması ve sıralaması olduğundan test yürütme açısından daha esnektirler.
JUnit hala bazı öncesi / sonrası yöntemlerinin statik olmasını gerektirir, bu da testlerin çalıştırılmasından önce yapabileceklerinizi sınırlar, TestNG'de bu sorun hiçbir zaman olmaz.
TBH, çoğunlukla iki çerçeve arasındaki farklar, entegrasyon / otomasyon testine odaklanmadığınız sürece pek bir şey ifade etmez. Deneyimlerime göre JUnit, birim testi için sıfırdan inşa edildi ve şimdi daha yüksek test seviyelerine doğru itiliyor, bu da IMO onu iş için yanlış araç yapıyor. TestNG, birim testlerinde başarılıdır ve sağlam veri sağlama ve mükemmel test yürütme yetenekleri sayesinde entegrasyon / otomasyon testi seviyesinde daha da iyi çalışır.
Şimdi ayrı bir konu olduğuna inandığım şey için, iyi yapılandırılmış, okunabilir ve sürdürülebilir testlerin nasıl yazılacağı. Bunların çoğunu bildiğinize eminim, ancak Factory Pattern , Command Pattern ve PageObjects gibi şeyler (test web siteleriniz varsa) hayati öneme sahiptir, testiniz (SUT) ile gerçek test arasında bir soyutlama katmanına sahip olmak çok önemlidir. (iş mantığının iddiaları). Daha güzel iddialara sahip olmak için Hamcrest'i kullanabilirsiniz . Tekrarı azaltmak ve ortaklığı güçlendirmek için javas kalıtım / arayüzlerinden yararlanın.
Neredeyse unuttum, ayrıca Test Verisi Oluşturucu Modelini de kullanın; bu, TestNG'nin veri sağlayıcı ek açıklamasıyla birleştiğinde çok yararlıdır.