Showing posts with label junit. Show all posts
Showing posts with label junit. Show all posts
Suite
JUnit framework'ü ile birden fazla test sınıfımızı istediğimiz sıra ile bir arada çalıştırabiliriz. Bunun için Suite yapısı kullanılır. Örneğin aşağıdaki SuiteTest sınıfımızı çalıştırdığımızda ArabaTest ve ArabaTest2 sınıfları sırası ile çalışacaktır.
public class Araba {
private int hiz;
private String marka;
Araba() {
hiz = 0;
}
public int getHiz() {
return hiz;
}
public void hareketEt() {
hiz++;
}
public void kaclaGidiyorum() {
System.out.println("Hız : " + hiz);
}
public boolean opelMi() {
if (marka.equals("opel")) {
return true;
}
return false;
}
}
import org.junit.Assert;
import org.junit.Test;
public class ArabaTest {
@Test
public void hareketEdiyorMu() {
Araba araba = new Araba();
araba.hareketEt();
Assert.assertNotEquals("Arabanın hızı 0'a eşit!", araba.getHiz(), 0);
// Diğer assert fonksiyonları
// Assert.assertArrayEquals
// Assert.assertEquals
// Assert.assertFalse
// Assert.assertNotNull
// Assert.assertNotSame
// Assert.assertNull
// Assert.assertSame
// Assert.assertThat
// Assert.assertTrue
}
}
package deneme;
import org.junit.Test;
public class ArabaTest2 {
@Test(expected = NullPointerException.class)
public void hataKontrol() {
Araba araba = new Araba();
araba.opelMi();
}
}
package deneme;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ ArabaTest.class, ArabaTest2.class })
public class SuiteTest {
}
Ignore
JUnit framework'ünde bulunan @Ignore anotasyonu ile test sınıfımızda çalışmasını istemediğimiz metotları belirtebiliriz. Örneğin bir test sınıfımızda 4 test metodu olduğunu düşünelim ve biz bu metotlardan sadece 3 tanesinin çalışmasını istiyorsak çalışmasını istemediğimiz metodun başına @Ignore anotasyonunu ekleriz.
JUnit framework'ü ile test sınıflarımızı yazarken yanlış senaryoları da test etme ihtiyacı duyabiliriz. Bir senaryoda verilmesi gereken hatanın gerçekten verilip verilmediğini kontrol etmemiz gerekebilir. Bu durumlar için JUnit framework'ü bizim için kullanışlı bir yapı sunuyor. Örnek;
public class Araba {
private String marka;
public boolean opelMi() {
if (marka.equals("opel")) {
return true;
}
return false;
}
}
import org.junit.Test;
public class ArabaTest {
@Test(expected = NullPointerException.class)
public void hataKontrol() {
Araba araba = new Araba();
araba.opelMi();
}
}
JUnit framework'ünde test senaryomuzu çalıştırdıktan sonra beklediğimiz sonuçların olup olmadığını tespit etmek için assert sınıfının fonksiyonlarını kullanırız. Örnek;
public class Araba {
private int hiz;
Araba() {
hiz = 0;
}
public int getHiz() {
return hiz;
}
public void hareketEt() {
hiz++;
}
public void kaclaGidiyorum() {
System.out.println("Hız : " + hiz);
}
}
import org.junit.Assert;
import org.junit.Test;
public class ArabaTest {
@Test
public void hareketEdiyorMu() {
Araba araba = new Araba();
araba.hareketEt();
Assert.assertNotEquals("Arabanın hızı 0'a eşit!", araba.getHiz(), 0);
// Diğer assert fonksiyonları
// Assert.assertArrayEquals
// Assert.assertEquals
// Assert.assertFalse
// Assert.assertNotNull
// Assert.assertNotSame
// Assert.assertNull
// Assert.assertSame
// Assert.assertThat
// Assert.assertTrue
}
}
JUnit, Java dilinde uygulamalarımızı test etmek için kullanabileceğimiz bir test framework'üdür. JUnit web sitesi ve github adresi;
JUnit framework'ünü örneğin maven projesi olarak çalışıyorsak ilgili dependency bilgisini ekleyerek kullanabiliriz. Aynı şekilde jar olarak da projemize ekleyebiliriz. Projemizin yapısına göre projemize ekleyebiliriz.
JUnit Nasıl Çalışır? JUnit Yaşam Döngüsü
JUnit framework'ünde test sınıflarımızı Java ile yazarız. Test sınıflarımızda metotlarımızın başına @Test anotasyonunu ekleyerek kullanırız. JUnit yaşam döngüsünde temel anotasyonlar şunlardır;
- @BeforeClass (Test sınıfımız çalıştığında en başta sadece bir kez çalışır)
- @Before (Her test metodundan önce bir kez çalıştır)
- @Test (Test metotlarını belirtmek için kullanılır)
- @After (Her test metodundan sonra bir kez çalışır)
- @AfterClass (Test sınıfımız çalıştığında en son sadece bir kez çalışır)