JUnit Suite Test ile yazdığımız birkaç test sınıfını birlikte çalışmasını sağlarız. Ben çalıştığım projede her paket için bir suite test sınıfı hazırlıyorum. Oluşturduğum tüm suite test sınıflarını çalıştıracak başka bir sınıfta tüm testlerin sıralı bir şekilde çalışmasını sağlıyorum.
Aşağıda ki örnekte Arcelik ve Beko isminde iki adet sınıfımızı oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 |
public class Arcelik { public String getModelName(){ return "Ar-1"; } } public class Beko { public String getModelName(){ return "BK-1"; } } |
Oluşturduğumuz her iki sınıftada getModelName adında String değer döndüren bir metot oluşturduk ve döndürmesi gereken değeri metot içersinde kendimiz tanımladık.
Aşağıda Arcelik sınıfının test sınıfı oluşturuyor ve çalıştırıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class ArcelikTest { Arcelik arcelik = new Arcelik(); @Test public void testModelName(){ System.out.println("Arçelik için model testi başladı..."); Assert.assertEquals("Ar-1", arcelik.getModelName()); System.out.println("Arçelik için model testi biti...\n"); } } |
1 2 |
Arçelik için model testi başladı... Arçelik için model testi biti... |
Test sınıfımızı çalıştırdık Ar-1 beklenen değeri, getModelName metodundan dönen değerle kıyaslaması doğru bir şekilde gerçekleştiği için test başarıyla tamamlandı. Şimdi Beko sınıfımız için test sınıfımızı oluşturuyor ve çalıştırıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class BekoTest { Beko beko=new Beko(); @Test public void testModelName(){ System.out.println("Beko için test başladı..."); Assert.assertEquals("BK-1", beko.getModelName()); System.out.println("Beko için test bitti...\n"); } } |
1 2 |
Beko için test başladı... Beko için test bitti... |
Yukarıda Beko içinde test sınıfımızı çalıştırdık ve EK-1 beklenen değeri, getModelName metodundan dönen sonucunun kıyaslaması doğru olduğu için test başarıyla tamamlandı.
1 2 3 4 5 |
@RunWith(Suite.class) @SuiteClasses({ArcelikTest.class, BekoTest.class}) public class TestSuiite { } |
1 2 3 4 5 |
Arçelik için model testi başladı... Arçelik için model testi biti... Beko için test başladı... Beko için test bitti... |
Yukarıda Test Suite sınıfımızı oluşturduk ve çalıştırdık. Metodun başında @RunWith notasyonu ve @SuiteClasses notasyonlarını tanımladık. Suite test sınıflarımızda @RunWith(Suite.class) tanımlaması hep aynı şekilde kalırken, @SuiteClasses notasyonumuzda test etmek istediğimiz sınıfları yazıyoruz ve sınıf tanımlamasını bu şekilde bırakıyoruz.
JUnit testlerimizi rastgele bir sırayla çalıştırır. Örneğin biz sınıflarımızı sıralı bir şekilde test etmek istersek aşağıda ki yöntemi kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class TestRunner { public static void main(String[] args) { System.out.println("Test Runner Başlıyor...!"); Result result = JUnitCore.runClasses(BekoTest.class, ArcelikTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } if(result.wasSuccessful()){ System.out.println("Test Runner başarıyla tamamlandı!"); } } } |
1 2 3 4 5 6 7 8 |
Test Runner Testleri Başlıyor...! Beko için test başladı... Beko için test bitti... Arçelik için model testi başladı... Arçelik için model testi biti... Test Runner başarıyla tamamlandı! |
Yukarıda ki Runner sınıfımızda test edeceğimiz sınıflarımızı tanımlayarak da testlerimizin çalışmasını sağlayabiliriz.