JUnit, belirli koşulları test etmek için isimleri assert ile başlayan statik metotları sağlar. Bu metotlarla beklenen ve gerçek değerleri karşılaştırarak testimizi sonuçlandırırız. Bu kıyaslama başarısız olursa AssertionException ile hata mesajı verilir.
1 2 3 4 5 |
public class Hesaplama { public double hesaplaUcgenAlani(double taban, double yukseklik){ return taban * yukseklik / 2; } } |
Örnekerimizde daha önce ki yazılarımızda da kullandığımız Hesaplama sınıfını kullanacağız.
assertEquals([mesaj], beklenen,gercek)
assertEquals metodu aracılığı ile belirtilen nesnelerin veya primitive değerlerin kıyaslaması yapılır. Eğer bu kıyaslama başarısız olursa hata mesajı verir. Hata mesajına ek mesaj yazmak istediğimizde parametrenin başına mesajımızı yazabiliriz. Bu kıyaslama metodunda diziler kullanılmaz. Diziler için assertArrayEquals metodu kullanılması gerekmektedir.
1 2 3 4 5 6 7 8 9 |
@Test public void testHesaplaUcgeninAlani(){ System.out.println("Start testHesaplaUcgeninAlani()... "); Hesaplama hesapla = new Hesaplama(); int sonuc=(int) hesapla.hesaplaUcgenAlani(3, 2); assertEquals(3, sonuc); System.out.println("Sonuç: " + sonuc); System.out.println("End testHesaplaUcgeninAlani()..."); } |
Yukarıda ki test metodunda assertEquals metoduna beklenen değerin 3, elde edilen değerin ise sonuc değişkeninde olduğu tanımlanarak kıyaslama yapılması sağlanmıştır. Beklenen ile elde edilen değer farklı olsaydı, AssertException’dan dolayı test metodu ilerlemeye devam etmeyecektir.
assertTrue ve assertFalse
assertTrue, koşul sonucunun true olmasında, assertFalse koşul sonucunun false olmasında çalışmaya devam edecektir. Metot içinde koşul tanımlamak yerine direk boolean değişkende verilebilir.
1 2 3 4 5 6 7 8 9 |
@Test public void testHesaplaUcgeninAlani(){ System.out.println("Start testHesaplaUcgeninAlani()... "); Hesaplama hesapla = new Hesaplama(); int sonuc=(int) hesapla.hesaplaUcgenAlani(3, 2); assertTrue(3==sonuc); System.out.println("Sonuç: " + sonuc); System.out.println("End testHesaplaUcgeninAlani()..."); } |
Yukarıda ki kullanımda beklenen değer 3’ü, elde edilen sonuc değişkeninin değeriyle kıyaslar. 3 ve sonuc değişkeninden gelen 3 değeri eşit olduğu için true döner. True değeri, assertTrue için doğru değerdir ve test metodu çalışmaya devam edecektir.
1 2 3 4 5 6 7 8 9 |
@Test public void testHesaplaUcgeninAlani(){ System.out.println("Start testHesaplaUcgeninAlani()... "); Hesaplama hesapla = new Hesaplama(); int sonuc=(int) hesapla.hesaplaUcgenAlani(3, 2); assertFalse(4==sonuc); System.out.println("Sonuç: " + sonuc); System.out.println("End testHesaplaUcgeninAlani()..."); } |
Yukarıda ki kullanımda beklenen değer 4’ü, elde edilen sonuc değişkenin değeriyle kıyaslar. 4 ve sonuc değişkenine gelen 3 değeri eşit olmadığı için false döner. False değeri, assertFalse için doğru değerdir ve test metodu çalışmaya devem edecektir.
assertNull ve assertNotNull
assertNull, nesnenin null olmasını kontrol eder. Null olması durumunda test metodu çalışmaya devam edecektir. assertNotNull, nesnenin null olmadığını kontrol eder. Nesne null değer değilse test metodu çalışmaya devam edecektir.
1 2 3 4 5 6 7 8 9 10 11 |
@Test public void testHesaplaUcgeninAlani(){ System.out.println("Start testHesaplaUcgeninAlani()... "); Hesaplama hesapla = new Hesaplama(); Integer sonuc=(int) hesapla.hesaplaUcgenAlani(3, 2); assertNotNull(sonuc); sonuc=null; assertNull(sonuc); System.out.println("Sonuç: " + sonuc); System.out.println("End testHesaplaUcgeninAlani()..."); } |
sonuc değişkeninin null değer alabilmesi için primitive tip olan int yerine, object olan Integer sınıfı üzerinden tipi tanımlanmıştır. assertNotNull ile sonuc değişkeninin null olup olmadığını kontrol eder. Eğer sonuc null değer değilse test metodu bunu doğru kabul eder ve çalışmaya devam edecektir. Daha sonrasında sonuc değişkenine null değeri atanarak assertNull ile değişken üzerinde null kontrolü yapılmıştır. assertNull için beklenen değer null olduğundan test metodu çalışmaya devam edecektir.
assertSame ve assertNotSame
assertSame, beklenen ve elde edilen nesnelerin aynı nesneyi işaret edip etmediği kıyaslanır. assertNotSame ise bu değerlerin aynı nesneyi işaret edip etmediği kıyaslanır. Bu kıyaslamalar sağlanması durumunda test metodu çalışmaya devam edecektir.
1 2 3 4 5 6 7 8 9 10 11 12 |
@Test public void testHesaplaUcgeninAlani(){ System.out.println("Start testHesaplaUcgeninAlani()... "); Hesaplama hesapla = new Hesaplama(); Integer sonuc=(int) hesapla.hesaplaUcgenAlani(3, 2); Integer sonuc2=sonuc; Integer sonuc3=new Integer(3); assertSame(sonuc, sonuc2);//aynı nesneleri işaret eder assertNotSame(sonuc2, sonuc3);//farklı nesneleri işaret eder System.out.println("Sonuç: " + sonuc); System.out.println("End testHesaplaUcgeninAlani()..."); } |
sonuc ve sonuc2 değişkenleri aynı nesneyi işaret ettiği için assertSame metoduna göre doğru sonuçtur. sonuc2 ve sonuc3 aynı nesneyi işaret etmediği için assertNotSame metoduna göre doğru sonuçtur. Test metodu doğru çalışmaya devam edecektir.
sonuc2 ve sonuc aynı nesneyi işaret etmesinin nedeni, sonuc değişkeninin, sonuc2’ye birebir atanmasıdır. sonuc3 değişkeni ise new ile yeni bir nesne oluşturulduğu için aynı değeri taşımasına rağmen sonuc2 ile aynı nesneyi işaret etmemektedir.
assertArrayEquals
Dizilerin karşılaştırılması için assertArrayEquals metodu kullanılması gerekmektedir. Bu dizilerin içinde ki öğelerin sıralamarıda birebir aynı olması gerekmektedir.
1 2 3 4 5 6 7 8 9 |
@Test public void testCheckIsimListesi(){ System.out.println("Begin testCheckIsimListesi(9..."); String[] iller={"İstanbul","Kocaeli","Edirne"}; String[] iller2={"İstanbul","Kocaeli","Edirne"}; assertArrayEquals(iller, iller2); System.out.println("İller: " + Arrays.toString(iller)); System.out.println("End testCheckIsimListesi()..."); } |
Yukarıda ki test metodunda iller ve iller2 isimli dizilerin karşılaştırılması yapılmıştır. Diziler içinde ki değerler birebir aynı oldukları için test metodu doğru kıyaslamadan dolayı çalışmaya devam edecektir.