JUnit Örnek Uygulama

Özellikle yazımı devam büyük projelerde test işlemleri her zaman büyük bir problem olmuştur. Yeni eklenen bir özellik ya da değiştirilen bir metot hiç beklenmedik bir anda uygulamanın farklı yerlerini etkileyebilir.

JUnit, yazılan metotların döndürdüğü değerlerin kontrolü yani doğru çalışıp çalışmadığını anlayabilmek için tasarlanmış bir araçtır. Çoğu IDE (Integrated Development Environment) test araçlarına destek verir.

Lafı çok uzatmadan en basit haliyle JUnit kullanan bir proje yapalım.

Ben uygulamayı Eclipse 2.7 Indigo kullanarak yazacağım. Önce yeni bir proje yaratalım.

Sonra JUnit kütüphanelerini projemize ekleyelim.

Test edeceğimiz sınıfımızı yazıyoruz. Ben basit olsun diye dört işlem yapan bir sınıf yazdım.

package dortIslem;

public class Hesapla {

	double topla(int sayi1, int sayi2) {
		return sayi1 + sayi2;
	}

	double cikar(int sayi1, int sayi2) {
		return sayi1 - sayi2;
	}

	double carp(int sayi1, int sayi2) {
		return sayi1 * sayi2;
	}

	double bol(int sayi1, int sayi2) {
		return sayi1 / (double) sayi2;
	}
}

Kodu yazdıktan sonra yeni bir test case oluşturalım.

Test sınıfımıza dikkat edersek TestCase adındaki soyut bir sınıftan türüyor. Şimdi test edeceğimiz her bir metot için test sınıfında bir test metodu yazıyoruz.

package dortIslem;

import junit.framework.Assert;
import junit.framework.TestCase;

import org.junit.Before;
import org.junit.Test;

public class TestIslem extends TestCase {

	@Before
	public void setUp() throws Exception {
		System.out.println("Test metodu çağrılacak");
		super.setUp();
	}

	@Override
	protected void tearDown() throws Exception {
		System.out.println("Test metodu çalıştı bitti");
		super.tearDown();
	}

	@Test
	public void testTopla() {
		double sonuc = new Hesapla().topla(25, 2);
		Assert.assertEquals(27.0, sonuc);
	}

	@Test
	public void testCikar() {
		double sonuc = new Hesapla().cikar(25, 2);
		Assert.assertEquals(23.0, sonuc);
	}

	@Test
	public void testCarp() {
		double sonuc = new Hesapla().carp(25, 2);
		Assert.assertEquals(50.0, sonuc);
	}

	@Test
	public void testBol() {
		double sonuc = new Hesapla().bol(25, 2);
		Assert.assertEquals(12.6, sonuc);
	}
}

Buradaki setUp() metodu her bir test metodu çağrılmadan önce, tearDown() metodu ise sonra çalışacaktır.

Testi başlatmak için Run As -> JUnit Test dememiz yeterli.

Sonuçlara bakacak olursak ;

bol() metodu çalışmış ancak gönderilen parametrelerle istenilen cevap dönmemiştir.

Test metotları içerisinde kullandığımız assertEquals() gibi birçok hazır test metodu vardır. İhtiyaca göre bir tanesi seçilerek kullanılabilir.