Örnek

Basit Bir Parametrik Test Örneği

Aşağıdaki gibi iki sayıyı toplayan bir methodu olan bir sınıfımız olsun:
public class Toplar {	
	public int topla(int a, int b){
		return a+b;
	}		
}
Toplama işlemi sadece bir kere değil, birden fazla sayıda tekrarlanabilir. Bunun için aşağıdaki gibi bir test sınıfı yazılabilir:
import static org.junit.Assert.*;
import java.util.*;
import org.junit.*;
import org.junit.runner.*;
import org.junit.runners.*;
import org.junit.runners.Parameterized.*;

@RunWith(value = Parameterized.class)
public class ToplaTest {
	
	private int number1;
	private int number2;
	private int expected;
	
	public ToplaTest(int number1, int number2, int expected) {
		this.number1=number1;
		this.number2=number2;
		this.expected=expected;
	}
	
	@Parameters(name = "{index}: topla({0}+{1})={2}")
	public static Iterable data1() {
		return Arrays.asList(new Object[][] { 
			{ 2, 2, 4 }, 
			{ 10, 1, 11 }, 
			{ 1, 1, 2 }, 
			{ 100, 1, 101 } 
		});
	}

	@Test
	public void testTopla(){
		Toplar t=new Toplar();
		int c=t.topla(number1,number2);
		assertEquals(expected,c);
	}
}
Her test için gerekli olan parametreler test sınıfın kurucusunda verilmektedir. Toplama örneğinde iki sayı ve toplama sonucu beklediğimiz sayı değerleri bulunmaktadır. Dikkat edilirse @Test ile belirtilen fonksiyon, number1, number2 ve expected şeklinde sınıf değişkenlerini kullanmaktadır. @Parameters ile kullanılacak farklı parametre örnekleri , bir Iterable tipinde verilmiştir. {index}: add({0}+{1})={2} ifadesi ise ekrana basılması sırasında test adımının adı olacaktır. Test çalıştığında aşağıdaki gibi bir çıktı alınacaktır :


[0: topla(2+2)=4]
[1: topla(10+1)=11]
[2: topla(1+1)=2]
[3: topla(100+1)=101]


Aynı örneği kurucu kullanmak yerine değişkenleri public yapıp, @Parameter kullanarak da yapılabilir. Bu şekilde yapılırsa test sınıfı aşağıdaki gibi olur:
import static org.junit.Assert.*;
import java.util.*;
import org.junit.*;
import org.junit.runner.*;
import org.junit.runners.*;
import org.junit.runners.Parameterized.*;

@RunWith(value = Parameterized.class)
public class ToplaTest {
	
	@Parameter
	public int number1;
	
	@Parameter(value = 1)
	public int number2;
	
	@Parameter(value = 2)
	public int expected;

	@Parameters(name = "{index}: topla({0}+{1})={2}")
	public static Iterable data1() {
		return Arrays.asList(new Object[][] { 
			{ 2, 2, 4 }, 
			{ 10, 1, 11 }, 
			{ 1, 1, 2 }, 
			{ 100, 1, 101 } 
		});
	}

	@Test
	public void testTopla(){
		Toplar t=new Toplar();
		int c=t.topla(number1,number2);
		assertEquals(expected,c);
	}
}
Dikkat edilirse kurucuya ihtiyaç yoktur
zafer.teker , 08.10.2014

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir