Java JUnit ile Birim Test Yazma
Bu yazımda sizlere Java programlama dilini kullanarak JUnit kütüphanesi ile nasıl birim testler oluşturabiliriz konusunu anlatacağım. Biz birim test yazmak için FizzBuzz algoritmasını kullanıyor olacağız. Öncelikle birim test ile ilgili bildiklerimi aktarmak istiyorum. Hadi başlayalım 🙂
Birim Test Nedir ?
Birim testler yazılan bir kodun test edilmesi için yazılmaktadır. Birim testler yazılımın en küçük parçaları olan method ve fonksiyonların davranışlarına odaklanmaktadır. Birim testler genellikle yazılım geliştiriciler tarafından yazılmaktadır ancak günümüzde test uzmanları da birim testler yazabilmektedir.
Birim Test Neden Yapılır ?
Birim testler hata bulmak için yapılmaz çünkü birim testler sadece method veya fonksiyonların davranışlarını test eder ancak bir bütünü test ederek hatalar bulunabilir. Hata bulmak için entegrasyon veya sistem testi yapılması gerekmektedir. Birim testlerin asıl amacı kaliteli, temiz ve bakımı kolay kod yazmaya teşvik etmesidir.
Netbeans ile Test Projesi Oluşturmak
Birim testleri Java programlama dilini kullanacağımız için java kodlarımızı Netbeans IDE ortamında yazıyor olacağız. Netbeans IDE programını buraya tıklayarak bilgisayarınıza indirip kurulumunu yapabilirsiniz. Siz farklı bir IDE de kullanabilirsiniz. File menüsünde New Project (CTRL + SHIFT + N) seçeneğine basın. Karşınıza aşağıdaki gibi proje tipi seçim ekranı gelecektir buradan Java > Java Class Library seçerek Next butonuna basın. Project Name alanına projenizin adını yazın ve Finish butonuna basın.

Proje oluşturulduğunda aşağıdaki gibi görünmesi gerekmektedir.

Source Packages klasörünün üzerinde sağ tıklayın New > Java Package seçeneğine basın. Açılan ekranda package name alanına package ismini yazın ve Finish butonuna basın. FizzBuzz algoritmasının kodunu yazabilmek için oluşturduğumuz package’ın üzerinde sağ tıklayın ve New > Java Class seçeneğine basın. Class name alanına sınıfın adını yazın ve Finish butonuna basın.
Fizz Buzz Algoritmasının Gereksinimleri
- 1 ile 100 arasında bir sayı al eğer sayı 3’e tam bölünüyorsa string “Fizz” değerini döndür.
- 1 ile 100 arasında bir sayı al eğer sayı 5’e tam bölünüyorsa string “Buzz” değerini döndür.
- 1 ile 100 arasında bir sayı al eğer sayı 3 ve 5’e tam bölünüyorsa string “FizzBuzz” değerini döndür.
- 1 ile 100 arasında bir sayı al eğer sayı 3 ve 5’e tam bölünmüyorsa string “Girilen sayı 3 ve 5’e tam bölünmüyor.” değerini döndür.
- Eğer girilen sayı 1 ile 100 arasında değilse string “Girilen sayı 1 ile 100 arasında olmalıdır.” değerinin döndür.
Fizz Buzz algoritmasının gereksinimlerine göre kod görünümü aşağıdaki gibi olacaktır.
class FizzBuzz { public String sayiKontrol(int x) { if (x % 3 == 0 && x % 5 == 0) { return "FizzBuzz"; } if (x % 3 == 0) { return "Fizz"; } if (x % 5 == 0) { return "Buzz"; } if (x % 3 != 0 && x % 5 != 0) { return "Girilen sayı 3 ve 5'e tam bölünmüyor."; } if (x < 1 && x > 100) { return "Girilen sayı 1 ile 100 arasında olmalıdır."; } return null; } }
JUnit Kütüphanesinin Projeye Dahil Edilmesi
Yazdığımız kodun birim testini yazabilmemiz için projemize JUnit kütüphanesini import etmemiz gerekmektedir. Bunun için Libraries klasörünün üzerinde sağ tıklayın ve Add Library seçeneğine basın. Açılan Add Library ekranından JUnit 4.12 kütüphanesini seçin ve Add Library butonuna basın. JUnit kütüphanesi projemize dahil edilmiş olacaktır.

Test Sınıfının Oluşturulması
Projenin üzerine sağ tıklayın New > JUnit Test seçeneğine basın. New JUnit Test ekranından Class Name ve Package alanlarını doldurun ve Finish butonuna basın test sınıfı otomatik oluşturulacaktır.

Fizz Buzz uygulaması için yazılan birim test kodu aşağıdaki olacaktır.
import org.junit.After; import org.junit.Test; import org.junit.Assert; import org.junit.Before; public class FizzBuzzTest { //Her methoda sınıf örneğini oluşturmamak için field tanımlandı. private FizzBuzz fizzBuzz; // Her test methoduna girmeden önce setUp methoduna girecek ve sınıfın örneğini oluşturacak. @Before public void setUp() { fizzBuzz = new FizzBuzz(); } @Test public void sayininUceBolunmeDurumu() { Assert.assertEquals("Fizz", fizzBuzz.sayiKontrol(3)); } @Test public void sayininBeseBolunmeDurumu() { Assert.assertEquals("Buzz", fizzBuzz.sayiKontrol(5)); } @Test public void hemUceHemBeseBolunmeDurumu() { Assert.assertEquals("FizzBuzz", fizzBuzz.sayiKontrol(30)); } @Test public void sayiUceVeBeseBolunmemeDurumu() { Assert.assertEquals("Girilen sayı 3 ve 5'e tam bölünmüyor.", fizzBuzz.sayiKontrol(7)); } @Test public void birIleYuzArasindaOlmamaDurumu() { Assert.assertEquals("Girilen sayı 3 ve 5'e tam bölünmüyor.", fizzBuzz.sayiKontrol(101)); } //Test methodu çalışmasını bitirdikten sonra tearDown methoduna girecek ve ilgili sınıfı null olarak set edecek. @After public void tearDown() { fizzBuzz = null; } }
Birim test kodlarını yazdıktan sonra sınıfın üzerinde sağ tıklayın ve Run File (test sınıfında yer alan tüm test methodlarını çalıştırmak için) seçeneğine basarak birim test kodunu çalıştırın. Test sonuçları aşağıdaki gibi olacaktır. Tek tek test methodu çalıştırmak içinse çalıştıracağınız test methodunun üzerinde içen sağ tıklayın Run Focused Test Method seçeneğine basın.

Faydalı olması dileğiyle…