3- Unit Test Exception Senaryoları ve Data Driven-Test

Mustafa Dikyar
3 min readJul 23, 2023

--

Herkese selamlar,

Unit test makale serimize exception senaryoları ve Data Driven Test konuları ile devam ediyoruz.

Eğer ilk iki kısmı okumadıysanız, önceki makalelere aşağıdaki linkler üzerinden erişebilirsiniz.

Zaman kaybetmeden makalemize devam edelim.

Eğer gelen line datamız empty olarak gelirse nasıl işleyeceğimizi ele alarak devam edelim. ShouldSkipEmptyLines ismindeki testimiz aşağıda görüyoruruz.

Eğer lines listesine bakarsanız, hemen empty değerlerimizi görürsünüz. Ardından, assert bölümünde gelen değer için önce bir null kontrolü yapıyoruz ve hemen altında değerin empty olup olmadığını kontrol ediyoruz.

Şimdi testimizi çalıştıralım ve neler olduğuna bakalım.

Şimdi, hata aldığımızı gözlemlediğimiz testimizi inceleyerek detaylarına bakalım. IndexOutOfRangeException hatası aldığımızı fark ediyoruz.

Şimdi güzel bir problemimiz var ve bu problemi çözmek için Parser’daki kodumuzu ele alalım.

Buradaki amacımız, testimizin başarıyla geçmesini sağlamak.

Parser’ımıza gelen değer için IsNullOrWhiteSpace kontrolümüzü ekliyoruz. İşte bu kadar.

Hadi testimizi çalıştırıp başarılı bir senaryo oluşturabildik mi, inceleyelim.

İşte sonuç, her şey yolunda.

Zaman kaybetmeden, kalan iki başlığımızdan ilki olan bir exception senaryosunu nasıl canlandıracağımızı ele alalım.

Burada Parser’ımızın Exception fırlatmasını bekliyoruz. Şimdi test edelim ve sonuçları inceleyelim.

Test sonucunu incelediğimizde, çalışmanın sağlıklı olmadığını görüyoruz.

Ayrıntıları incelediğimizde, testimizin bir istisna beklediği ancak IndexOutOfRangeException hatası ile karşılaştığımız belirtiliyor.

Bu durumda, bu senaryo için Parser’ımızı düzenlemeye gidelim.

DataItem’ımızın length’inin iki olduğunu görüyoruz, kontrolümüzü eklemek için gidip bunu yapalım.

Kontrolü ele alalım, testimizi çalıştıralım ve sonuçları gözlemleyelim.

İşte, bu kadar!

Mevcut casemiz başarıyla sonuçlandı. Şimdi farklı bir exception için bir senaryo oluşturalım.

Parser’ımıza tarih parse etmeye çalışan bir kontrol ekliyoruz ve işlem başarılıysa dateTime’i out parametresiyle veriyoruz. Başarılı olunamazsa ise bir Exception throw ediyoruz.

Şimdi testi çalıştıralım ve sonuçları inceleyelim.

Bu test için de başarılı bir şekilde testi geçtik. Exception senaryoları konusunda bu kadarının yeterli olduğumu düşünüyorum.

Sıra Data Driven Test’e geldi.

Önceki kodlarımızı gözden geçirirsek, hatırlayacağınız gibi, gelen değerleri doğrudan kodun içine magic string olarak ekliyorduk. Ancak, bu yaklaşım çok iyi bir uygulama değil. Parametreler aracılığıyla değerleri alarak daha doğru bir yaklaşım kullanmak istiyorsak, nasıl yapabileceğimize bir göz atalım.

İşte Data Driven Test!

İşte kodumuz ve yapmamız gerekenler:

  1. Testimizi “Fact” yerine “Theory” olarak işaretlemeliyiz.
  2. Data ve mesajlarımızı “InlineData” özelliği üzerinden göndermeliyiz.

Bu kadar! Bu bölümün sonuna geldik.

Branchimiz de bu bölümde yazdığımız kodları içeriyor.

Böylelikle, Unit Test makale serimizin ikincisinin de sonuna geldik.

Bir sonraki makalemizde Bölüm 3: Unit Test Exception Senaryoları ve Data Driven Test konusunu ele alacağız.

Önceki makaleye bu link üzerinden, sonraki makaleye de buradaki link üzerinden ulaşabilirsiniz.

Okuduğunuz için teşekkür ederim.

--

--