Bugün JUnit iddiaları yerine java iddiası olan bir JUnit test vakası gördüm — Birini diğerine tercih etmenin önemli avantajları veya dezavantajları var mı?
Bugün JUnit iddiaları yerine java iddiası olan bir JUnit test vakası gördüm — Birini diğerine tercih etmenin önemli avantajları veya dezavantajları var mı?
Yanıtlar:
JUnit4'te, bir JUnit assert tarafından atılan istisna (aslında Hata), java assertanahtar sözcüğü (AssertionError) tarafından atılan hatayla aynıdır , bu nedenle, assertTrueyığın izleme ile tamamen aynıdır ve farkı anlayamazsınız.
Bununla birlikte, iddiaların JVM'de özel bir bayrakla çalışması gerektiğinden, birçok testin yalnızca JUnit testleri çalıştırıldığında birisinin sistemi bu bayrakla yapılandırmayı unutması nedeniyle başarılı görünmesine neden olması gerekir - bu iyi değil.
Genel olarak, bu nedenle, JUnit'i kullanmanın assertTruedaha iyi bir uygulama olduğunu, çünkü testin çalıştırılmasını garanti ettiğini, tutarlılığı (bazen assertThatjava anahtar kelimesi olmayan diğer iddiaları kullanırsınız ) ve JUnit'in davranışının geçerli olduğunu iddia ediyorum. gelecekte değişmesi gerekir (bir tür filtreye veya gelecekteki başka bir JUnit özelliğine bağlanmak gibi), kodunuz bundan yararlanabilecektir.
Java'daki assert anahtar kelimesinin gerçek amacı, onu çalışma süresi cezası olmadan kapatabilmektir. Bu, birim testleri için geçerli değildir.
Yerleşik assertifadeden daha zengin bir API sundukları ve daha da önemlisi JVM argümanını assertgerektiren aksine açıkça etkinleştirilmeleri gerekmediği için JUnit iddialarını tercih ederim -ea.
-eaher zaman etkindir mvn test, buna gerek yoktur -ea. Daha zengin api, iyi yakalama. Bazen API'nin testte kötüye kullanıldığını düşünüyorum çünkü uygulamanın bir parçası değil (a in api), ona sadece daha zengin yöntemler demeyi tercih ediyorum.
Bir test başarısız olduğunda daha fazla bilgi alırsınız.
assertEquals(1, 2); sonuçlanır java.lang.AssertionError: expected:<1> but was:<2>
vs
assert(1 == 2); sonuçlanır java.lang.AssertionError
mesaj bağımsız değişkenini eklerseniz daha fazla bilgi edinebilirsiniz assertEquals
assert 1==2: "1 is not 2";.
assertdoğruluğu kontroller için - tercih edilebilir olacağını performansını etkileyecek ve böylece en iyi engelli varsayılan olarak bulunmaktadır. Ancak deneyimlerime göre, iddiaların çoğu her zaman açık olmalıdır.
JUnit asserts'i test senaryolarında ve kodda java'nın assert'ini kullanın derim. Başka bir deyişle, gerçek kod, aşikar olduğu üzere asla JUnit bağımlılıklarına sahip olmayacaktır ve eğer bir testse, JUnit varyasyonlarını kullanmalıdır, asla iddia etmeyecektir.
JUnit kullanıyorsanız, JUnit iddialarını kullanmanız gerektiğini söyleyebilirim. assertTrue()temelde aynıdır assert, Aksi takdirde neden JUnit kullanasınız ki?
Assertdaha fazla standart şablon gerekir. assertJUnit olmadan bütün bir çerçeve yazmanız gerekir.
Yalnızca parlak ve yeni şeyler kullanıyorsanız, ancak Java'da 1.4SE'ye kadar kullanılmadığını iddia ediyorsanız, bu geçerli olmayabilir. Bu nedenle, daha eski teknolojiye sahip bir ortamda çalışmanız gerekiyorsa, uyumluluk nedenleriyle JUnit'e yönelebilirsiniz.