JUnit ile Basit Bir Test Uygulaması

JUnit testlerini Eclipse ortamında gerçekleştirmek istiyorsanız, Eclipse Juno ve bundan sonraki sürümlerde herhangi bir jar dosyası indirmeden JUniti kullanabilirsiniz.                File -> New -> JUnit Test Case ile test projenizi oluşturabilirsiniz.

Ancak ekli değilse JUnit jar dosyasını JUnit adresinden indirebilirsiniz.
Bu kütüphaneyi projenizde kullanmak için projenize sağ tıklayıp Build Path-> Configure Build Path dedikten sonra Libraries sekmesinden Add External JARs seçeneğine tıklayıp indirmiş olduğunuz Junit4.*.jar arşivini seçiniz.  Artık JUnit kütüphanesi eklenmiş oldu.

Basit bir test ile başlayabiliriz. Toplama ve çarpma işlemleri yapan metotlar yazalım ve bu metotların doğru çalışıp çalışmadığını kontrol edelim;
Projemizi oluşturduktan sonra ilk önce toplama ve çarpma işlemleri için fonksiyonlarımızı aşağıdaki şekilde yazalım.

Metotlarımızı yazdıktan sonra projemize JUnit testimizi ekleyelim. Daha önce anlatıldığı gibi dilerseniz projenize sağ tıklayıp New -> JUnit Test Case ile projenizi oluşturabilirsiniz. Next’e tıklayarak test etmek istediğiniz metodları seçebilirsiniz, Eclipse tüm metodları seçenek halinde size sunacaktır ya da yeni bir class oluşturup kütüphaneleri kendiniz ekleyip test metotlarını kendiniz oluşturabilirsiniz.

 Run-As-> JUnit Test ile projemizi çalıştırdığımızda yeşil bir çubuk göreceksiniz. Bu çubuk yazdığınız testlerin başarılı bir şekilde sonuçlandığını gösterir.

Bir de testin başarısız olduğu durumu görmek için bir test metodu daha yazalım.

testHataliToplama metodunda, toplama fonksiyonundan dönen sonuç aslında 12 fakat biz testte sonucun 11 olmasını bekliyoruz.Buradaki testte beklediğimiz değer yanlış olduğu için çalıştırdığımızda, kırmızı çubuk göreceksiniz.

Örnek pek spesifik olmadı fakat hataları görme açısından basit ve yararlı olacağını düşünüyorum.

Ek olarak kullanabileceğiniz test metodları ise şunlardır;

fail(String): Methodun başarısız olmasına izin verir. Ulaşılamayan kod parçalarını kontrol etmek için kullanılır.

assertTrue(true): Sonucun doğru olduğunu kontrol eder.

assertNull([message], object): Nesne null mu kontrol eder.

assertNotNull([message], object): Nesne Null değil mi kontrol eder.

assertSame([String], expected, actual): İki değişken de aynı nesneye mi referans veriyor kontrol eder.

assertNotSame([String], expected, actual): İki değişken farklı nesnelere mi referans veriyor kontrol eder.

assertTrue([message], boolean condition): Boolean koşulu “true” mu kontrol eder.

assertFalse([message], boolean condition): Boolean koşulu “false” mu kontrol eder.

assertsEquals([String message], expected, actual): Değerler aynı ise test eder.
Array kullanıldığında, dizinin adreslerinin aynı olup olmadığını kontrol eder, içeriğini karşılaştırmaz.

assertsEquals([String message], expected, actual, tolerance):  Float veya Double kullanıldığı zaman, ne kadar tolerans verilmesi gerektiğini gösterir.
Kaç tane ondalık sayısının aynı olup olmadığını kontrol edeceğine karar veririz.

Kullanabileceğiniz diğer metotlar;

@Test public void method(): Test metodu olduğunu gösterir.

@Before public void method(): Testten önce methodu gerçekleştirir.Bu method test için gerekli şeyleri hazırlar, giriş verilerinin okunması gibi.

@After public void method(): Method, test ile birlikte başlamalıdır.

@BeforeClass public void method(): Bütün testlere başlamadan önce method()’u çalıştırır, bu genelde zaman alıcı işlerde kullanılır, veritabanı bağlantısı yapmak gibi.

@AfterClass public void method(): Bütün testler bittikten sonra method() çalıştırılır. Bu genel de işlem sonrası temizlik için kullanılır, veritabanı bağlantısını kapatmak vb.

@Ignore: Test methodunu görmezden gelinir.

@Test(expected=IllegalArgumentException.class): Eğer adı verilen exception atılıyorsa testi yapar.

@Test(timeout=1000):  Methodun işlem süresi 1000 milisaniye (1 saniye) tutuyorsa başarısızlıkla sonuçlanır.

 

Loading

Facebooktwitterredditpinterestlinkedinmail

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.