Java TestNG Nedir ?

Test Nedir?

Test, bir uygulamanının gereksinimlere uygun şekilde çalışıp çalışmadığından emin olmak için yapılan kontrol sürecidir. Tek bir test bir sınıf, metot, vs test edilmesini sağlayacak şekilde hazırlanır.

TestNG (Next Generation)

TestNG, JUnit ve NUnit test frameworklerinden etkilenerek Cedric Beust tarafından geliştirilen açık kaynak bir test frameworküdür. Ancak eksikleri kapatmış ve kullanımı daha kolay hale getiren bazı özellikleri vardır. Eski çerçevelerdeki kısıtlamaları ortadan kaldırarak daha esnek ve kolay test yazmaya imkan verir.

TestNG tüm test kategorilerini kapsayacak şekilde tasarlanmıştır. Kullanım için JDK 5 ve üst versiyonları gerektirir.

TestNG Özellikleri

Başlangıç için bir örnek

Testleri çalıştırmak için IDE’lerin eklentileri kullanılabilir. Komut satırından maven aracını kullanarak da çalıştırabiliriz.

TestNG ile ilk örneğimiz için Makale adında bir POJO oluşturduk.

public class Makale {
    private String baslik;
    private String icerik;

    public String getBaslik() {
        return this.baslik;
    }
    public void setBaslik(String baslik) {
        this.baslik = baslik;
    }

    public String getIcerik() {
		return this.icerik;
    }
    public void setIcerik(String icerik) {
    	  this.icerik = icerik;
    }
}

Şimdi Makale sinifimizin set ve get metodunu test ediyoruz.

import org.testng.Assert;
import org.testng.annotations.Test;

public class MakaleTest {
    Makale makale = new Makale();

    @Test
    public void makaleTest() {
        makale.setBaslik("Bugün okullar tatil");
        makale.setIcerik("Kar yağışından dolayı okullar tatil edildi.");

        Assert.assertEquals(makale.getBaslik(), "Bugün okullar tatil");
        Assert.assertEquals(makale.getIcerik(), "Kar yağışından dolayı okullar tatil edildi.");
    }
}

Şimdi Makale sınıfı için MakaleIslem adında bir sınıf oluşturalım. Bu sınıf makalenin içeriğindeki kelime sayısını versin.

public class MakaleIslem {

    public int kelimeSayisi(Makale makale) {
        return makale.getIcerik().split(" ").length;
    }
		
}

Şimdi de MakaleIslem sınıfının doğru çalışıp çalışmadığını test edelim.

import org.testng.Assert;
import org.testng.annotations.Test;

public class MakaleIslemTest {
    Makale makale = new Makale();
    MakaleIslem makaleIslem = new MakaleIslem();

    @Test
    public void kelimeSayisiTest() {
        makale.setBaslik("Bugün okullar tatil");
        makale.setIcerik("Kar yağışından dolayı okullar tatil edildi.");
		
        int kelimeSayisi = makaleIslem.kelimeSayisi(makale);
        Assert.assertEquals(kelimeSayisi, 6);
    }
}