2 JUnit Assert sınıfı arasındaki farklar


257

JUnit çerçevesi 2 Assertsınıf içerir (açıkçası farklı paketlerde) ve her birindeki yöntemler çok benzer görünmektedir. Bunun neden olduğunu açıklayan var mı?

Bahsettiğim sınıflar: junit.framework.Assertve org.junit.Assert.


8
Intellij IDEA'da junit.framework.*içindeki statik içe aktarma açılır listesinden hariç tutabilirsiniz Editor->General->Auto Import->Exclude from Import and Completion.
jordanpg

Yanıtlar:


239

Eski yöntem (JUnit 3'ün) test sınıflarını genişleterek işaretlemekti junit.framework.TestCase. junit.framework.AssertKendisi ve test sınıfınız kalıtsal yöntemleri bu şekilde çağırma becerisi kazandı.

JUnit'in 4. sürümünden bu yana, çerçeve Annotationsişaretleme testleri için kullanılır. Bu yüzden artık genişletmenize gerek yok TestCase. Ancak bu, iddia yöntemleri kullanılamadığı anlamına gelir. Ancak yeni Assertsınıfın statik olarak içe aktarılmasını sağlayabilirsiniz . Bu yüzden yeni sınıftaki tüm onay yöntemleri statik yöntemlerdir. Böylece şu şekilde içe aktarabilirsiniz:

import static org.junit.Assert.*;

Bu statik içe aktarmadan sonra, önek olmadan bu yöntemleri kullanabilirsiniz.

Yeniden tasarımda ayrıca org.junit, paket adlandırma için normal kuralları daha iyi takip eden yeni pakete taşındılar .


6
Bu cevap tamamen doğru değil, junit.framework.Assert ve org.junit.Assert sınıfında yöntemlerin statik olarak içe aktarılmasını sağlayabilirsiniz. Bununla birlikte, org.junit.Assert sınıfına sadık kalmak, muhtemelen daha yeni, biraz yeniden yazılmış ve muhtemelen bir yedek olması gerektiği için iyi bir fikirdir.
Glenn Bech

75

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Ek açıklama desteği ile özellikle JDK5 ve üstünü çalıştırırken en yenisini tercih edin.


19

Fonksiyonel bir değişiklik aslında var: org.junit.AssertEğer iki argümanı kullanmak durumunda şikayet edecek assertEquals()olan floatveya doubleederken, junit.framework.Assertsessizce AUTOBOX olacaktır.


5

Ben ondan yeniden junit.frameworkdüzenleme org.junitve junit.framework.Assertgeriye uyumluluk için korunur inanıyorum .


3

Ben kaba bir kaynak kodu karşılaştırma yaptım ve ciddi bir değişiklik yoktur. Çok sayıda yorum eklendi org.junit.Assertve bazı yeniden düzenlemeler yapıldı. Tek değişiklik, karşılaştırmasıdır Arrays. Bazı kod temizleme işlemleri var, ancak (imho) işlevsel bir değişiklik yok .


1
@David Moles'in doğru olduğuna inanıyorum ve bu fonksiyonel bir değişiklik olacaktır.
orbfish

1

Android Studio'da (ve IntelliJ'de de), junit.frameworkotomatik olarak içe aktarma teklifinin dışında bırakabilirsiniz .

Kapsamı IDEveya arasında ayarlayabilirsiniz Project. JUnit 3 kullanan projeleriniz yoksa IDE kapsamı içinde güvenle kalabilirsiniz.

Ayar konumu:

Tercihler -> Editör -> Genel -> Otomatik İçe Aktar

resim açıklamasını buraya girin

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.