JUnit veya diğer test araçlarını sadece yazılan programların test edilmesini veya debug edilmesi olarak biliyordum.Fakat bundan daha fazlası “Test Driven Design“ isminde bir yazılım geliştirme ve tasarlama yöntemleri mevcutmuş.Bunları hızlıca öğrenerek örnekler geliştirmeye başladım.

      Her ne kadar benim staj yaptığım şirket ufak ölçekli olsa da bir çok yazılım geliştirme ortamında ufak da olsa bir test bölümü veya tester denilen geliştirilen yazılımları test eden bir grup insan olur.Bu yüzden test işlemi geliştirme bittikten sonra yapılır.İşte “Unit Test” kavramı buradan gelmektedir.Unit türkçesi küçük anlamına gelir.Yani yazlımın tamamı değil,sınıf veya metotların kodlama esnasında test edilmesinden yola çıkarak geliştirilmiş fakat zamanla Extreme programming(XP) trendinin bir parçası haline gelmiştir.Bu yüzden modern uygulamalarda bir tasarım standardı olmuştur.

    JUnit ile kodlama yaparken şu yok takip edilmeli.

  • Önce test kodunu yaz.
  • Testi çalıştır ve testi geçmediğini yani kırmızı ışığı gör.
  • Testi geçecek basit kodu yaz ve testi geçtiğini gör (yeşil ışık).
  • Tüm testleri geçecek şekilde tüm kodları tekrar düzenle.
  • Başa dön.
  •    Örnek Test Kodu Oluşturma

    İlk olarak örnek kodumuzu oluşturuyoruz , dikkat edilmesi gereken burada tek bir satır gerçek kod oluşturmuyoruz.İlk olarak sadece test kodu oluşmalıyız.Akabinde ise testimize uygun gerçek kodu yazmalıyız. Şu anki java IDE’lerinin hepsi JUnit desteklemekte.İlgili menüler kullanılarak Test sınıfı oluşturulabilir.Ben burada test sınıfını elimle ekleyeceğim.

    import org.junit.Assert;

    import org.junit.Test;

    Bu iki sınıf şimdiki test sınıfımız için yeterli.Ege gerekli kütüphaneler yüklü değil ise şuan ki Java

    IDE’leri otomatik olarak indirmekte. Devamında ise basit bir test yazıyoruz.

    public class SearchPersonTest {<br />    @Test<br />    public void testSearchName() throws Exception {<br />        Assert.assertTrue("Sonuc Yanlis", searchName("alikemal"));<br />    }<br /> }

    Simdi kodu çalıştırdığımızda junit arayüzü aşağıda kırmızı bir uyarı verecek.Bu UnitTest’in meşhur hata ekranıdır.Bu hata kodumuzun veya metodumuzun istediğimizin gibi çalışmadığını anlamızı sağlıyor.Ayrıca fonksiyonun nasıl çalışması grektiği hakkında fikir edinmemizi sağlıyor.

    test fail

    Görüldüğü gibi Junit olması gerektiği gibi hata verdi:Şimdi örnek kodumuz [5] oluşmaya başlayabilir.

    Örneğimizde bir Person sınıfı ile kişi bilgilerini gireceğiz.

    public class Person {<br /> private String name, surName, studentID;<br />     public String getName() {<br />         return name;<br />     }<br />     public void setName(String name) {<br />         this.name = name;<br />     }<br />     public String getSurName() {<br />         return surName;<br />     }<br />     public void setSurName(String surName) {<br />         this.surName = surName;<br />     }<br />     public String getStudentID() {<br />         return studentID;<br /> }<br />     public void setStudentID(String studentID) {<br />         this.studentID = studentID;<br />     }<br /> }

     Simdi ise kişi arama için için SearchPerson sınıfımızı oluşturacağız.

    public class SearchPerson {<br />     Person kisi = new Person();</p> <p>    public SearchPerson() {<br />         kisi.setName("alikemal");<br />         kisi.setSurName("ocalan");<br />         kisi.setStudentID("1080");<br />     }</p> <p>    public Boolean searchName(String who) {<br />         if (who.equals(kisi.getName()))<br />             return true;<br />         else {<br />             return false;<br />         }<br />     }<br /> }

    Simdi Test sınıfımızı yeni sınıfımıza göre tekrar oluşturalim.

    public class SearchPersonTest {</p> <p>    @Test<br />     public void testSearchName() throws Exception {<br />         SearchPerson arama = new SearchPerson();<br />         Assert.assertTrue("Sonuc Yanlis", arama.searchName("alikemal"));<br />     }<br /> }

    Simdi test edelim:

    Görüldüğü gibi testimiz sorunsuzca çalıştı ve “All Test Paased” (yeşil rengini) uyarısını verdi.Burada assertTrue() fonksiyonu False degeri parametre olarak girildiğinde soldaki string degerini uyarı olarak veriyor. Örnek olarak yanlış bir değer girelim.

    Burada searchName(“alikemal”) yerine searchName(“burak”)  değerini girdik ve görüldüğü gibi

    “Sonuc Yanlis” uyarımızı aldık.