TDD – JUnit Kullanimi [Eclipse]
- Sevdanur GENC

- Mar 30, 2013
- 3 min read
Bu makalem ile size onceki yazimda Java’nin kullandigi Test Unit Framework olan JUnit’ten bahsetmistim. Hairlarsaniz, Netbeans arayuzu ile birlikte bir uygulama gerceklestirmistim. Simdi ise Eclipse arayuzunde JUnit kullanimi adim adim anlatabilmek adina basit bir uygulama gerceklestiriyor olacagim. Oncelikle JUnit Framework'unu indirebilmeniz icin http://junit.org sitesini ziyaret etmeniz ve jUnit4.0 icin yayinlanmis olan jar'lardan guncel olan versiyonunu indiriyoruz. Ardindan Eclipse Ide'mizi calistiriyoruz ve Yeni bir Java Project ile uygulamamizi gelistirmeye basliyorouz.
File -> New Project ile projemize bir isim veriyoruz.
Olusuturan projenin uzerinde sag click yapiyoruz ve menuden, Build Path -> Configure Build Path... diyoruz. Acilan pencerede Libraries sekmesinde Add External JARs... butonunu tikliyoruz ve download etmis oldugumuz JUnit jar'ini seciyor ve listeye ekliyoruz. Projemize JUnit jar'ini ekledikten sonra islemlerimizi tamamlamis oluyoruz.
Uygulamami matematik'te dort islemin sahip oldugu methodlari olusturarak yapacagim icin, uygulamamiz icerisine src uzerinde sag click yaparak yeni bir package ekliyorum ve Ismini DortIslem olarak veriyorum.
Simdi yapmamiz gereken sey, test islemlerini tersten gerceklestiriyor olmamiz. Bunun icin oncelikle olusuturan projenin uzerinde sag click yapiyoruz ve yine menuden, Build Path -> Configure Build Path... diyoruz. Acilan pencerede Source sekmesinde Add Folder diyoruz. Acilan pencerede Create Folder diyerek icerisinde test kodlarimi saklayabilecegim 'test' isminde bir klasor olusturuyorum. Olusan test klasoru icerisine Ismi DortIslemTest olacak sekilde bir package olusturuyorum.
Artik uygulmam icin gerekli olan oncelikli olarak test kodlarimi yazmaya baslayacagim. Bunun icin MatematikTest isimli Java Class'imi Test klasoru icerisindeki package icerisine olusturuyorum ve oncelik olarak ilk test kodumu asagidaki gibi yaziyorum.
@Test
public void testToplamaIslemi() {
Matematik dortIslem = new Matematik();
assertEquals("Sonuc : ", 4, dortIslem.ToplamaIslemi(10, 5));
}
Eclipse uzerinde yazmis oldugunuz bu kod ile size yapmis oldugunuz veya eclipse'in bulamadigi method, sinif ve paket isimlerini hatalari ile birlikte gostercektir. Bunun icin oncelikle paketinizi olusturmaniz, sonrasinda java sinifinizi ve icerisine method'larinizi yazmaniz gerekmektedir. Bu sebeple Olusturmus oldugum Matematik.Java icerisine ToplamaIslemi isimli iki deger alan bir method'u artik yazma vaktim geldi.
public int ToplamaIslemi(int x, int y) {
int sonuc = x + y;
System.out.println("Toplama Isleminin Sonucu ; " + sonuc);
return sonuc;
}
Goruldugu gibi test method'un da gondermis oldugum iki degeri ve sonuc degerini Matematik.java'da yazmis oldugum ToplamaIslemi methodu karsilamis olacak ve sonucunu hesaplayarak SYSO ile console'da ekrana yazdirmis olacak.
Simdi sira geldi onemli adimlarimizdan birisine. Junit'i aktiflestirmeye...
Bunun icin yazmis oldugumuz Matematik.Java class'i uzerinde sag click yapiyoruz ve Run As kismindan Junit Test'i seciyoruz.
Testimizi calistirdigimizda asagidaki gibi ekran ciktisinda gondermis oldugum iki degeri toplayip sonucunu yazdigini ve dogru bir sekilde calistigini goruyoruz.
Fakat bu calisan dogru kisim normal sinifimizdaki method... Peki JUnit tarafinda durumlar nasil?
Goruldugu gibi Test'imiz kirmizi seritle birlikte hatali calistigini kullaniciya gostermektedir. Buradaki vermis oldugumuz degerlerin sonucunu biz 4 olarak bulacagini soylemistik. Halbuki gercek degerin return ile bize 15 olarak vermesi gerekiyordu. Bunu Failure Trace penceresindeki yazdirmis oldugumuz mesajlada anlayabiliyoruz. Peki kodumuzdaki verdigimiz sonucu 4 degilde gercekte olmasi gereken sonucu yazarsam junit'in tepkisi ne olacak?
Goruldugu gibi yesil seritle karsilastik ve su an icin testimizde hic bir hatanin olmadigini goruyoruz. Ayni sekilde diger islemler icin yani cikarma, carpma ve bolme icin de test methodlarimizi yazalim ve ardindan bu methodlari canlandirabilmemiz icinde esas matematik.java sinifimizda methodlari olusturalim. Dilerseniz ekran goruntulerini makale sonunda inceleyebilirsiniz.
MatematikTest.Java Kaynak Kodlari;
package DortIslem;
import junit.framework.TestCase;
import org.junit.Test;
public class MatematikTest extends TestCase {
@Test
public void testToplamaIslemi() {
Matematik dortIslem = new Matematik();
assertEquals("Sonuc : ", 15, dortIslem.ToplamaIslemi(10, 5));
}
@Test
public void testCikarmaaIslemi() {
Matematik dortIslem = new Matematik();
assertEquals("Sonuc : ", 5, dortIslem.CikarmaaIslemi(10, 5));
}
@Test
public void testCarpmaIslemi() {
Matematik dortIslem = new Matematik();
assertEquals("Sonuc : ", 50, dortIslem.CarpmaIslemi(10, 5));
}
@Test
public void testBolmeIslemi() {
Matematik dortIslem = new Matematik();
assertEquals("Sonuc : ", 2, dortIslem.BolmeIslemi(10, 5));
}
}
Matematik.Java Kaynak Kodlari;
package DortIslem;
public class Matematik {
public int ToplamaIslemi(int x, int y) {
int sonuc = x + y;
System.out.println("Toplama Isleminin Sonucu ; " + sonuc);
return sonuc;
}
public int CikarmaaIslemi(int x, int y) {
int sonuc = x - y;
System.out.println("Cikarma Isleminin Sonucu ; " + sonuc);
return sonuc;
}
public int CarpmaIslemi(int x, int y) {
int sonuc = x * y;
System.out.println("Carpma Isleminin Sonucu ; " + sonuc);
return sonuc;
}
public int BolmeIslemi(int x, int y) {
int sonuc = x / y;
System.out.println("Bolme Isleminin Sonucu ; " + sonuc);
return sonuc;
}
}
Ekran Goruntuleri;
Matematik.Java Sinifindaki method'lardan gelen sonuclarin console'da listelenmesi.
JUnit penceresinde ki MatematikTest.Java sinifindan gelen sonuclarin dogrulugu listelenmistir. Keyifli Calismalar Dilerim.
Comments