11 Nisan 2014 Cuma

Test Tarafında Oluşabilecek Hataları Tespit Etme


Merhaba arkadaşlar;
  Geçen hafta NUnit Gui Tool kullanarak birim testlerin nasıl oluşturulup test edildiğine dair uygulamalar yapmıştık. Bu hafta ise kaldığımız yerden devam ederek test yaparken oluşabilecek hataları tespit edip, daha düzenli kod yazmak için kullanılan çeşitli metodlardan bahsedeceğim. Bu sayede daha hızlı nasıl test yapıp, uygulamalarımızı pratik hale getirebilmeyi öğreneceğiz.

Hataları Test Etmek

  Hata yönetimi bütün yazılımlarda önemlidir. Test tarafında da bir hatanın oluşup oluşmadığını test edebiliriz. Bunun için ExpectedException attribute’sini kullanıyoruz.
 
  Paydaya sıfır yazılması durumunda bir hata oluşumunu test etmek gerekir. Şimdi bir metod daha yazalım ve bu hatayı handle edip etmediğimizi test edelim.














  Dikkat ederseniz burada Assert yoktur. Bunun yerine aşağıdaki gibi bir attribute ekledik.




  Build edip TestClient’a geçtiğimizde yeni metodun eklendiğini fakat başarısız olduğunu görüyoruz.
































  Demek ki bu hatayı kontrol altına almamışız. Hemen aşağıdaki gibi bir değişiklik yapalım.
Artık testimiz başarılı olacaktır.

SetUp ve TearDown Attribute’leri

   Bu attribute’ler genellikle refactoring dediğimiz süreçte kullanılırlar. Mesela dikkat ederseniz Matematik sınıfının referansını ben iki metodda da kullandım. Dolayısıyla ben aynı kodu iki kere yazdım. Bunu yapmak yerine Setup attributesine sahip bir metod ile, her testin öncesinde çalışacak bir yardımcı metod kullanılabilir. Kısacası, adı üstünde, bir SetUp işlemi yapılıyor.

Aşağıdaki gibi değişiklik yaptım.































  Çok daha temiz bir kod yazmış olduk. Burada dikkat etmenizi istediğim husus şudur ki, SetUp ile süslü metod, her test metodunun öncesinde çalıştırılır.


 TearDown attribute’si ise her hest metodunun sonunda çalışmasını istediğiniz kodlar var ise, kullanılabilir.


  Bunun yerine setup metodunun tüm sınıflardaki tüm testlerin başında çalışmasını isterseniz veya teardown metodunun tüm sınıflardaki tüm testlerin sadece sonunda çalışmasını isterseniz aşağıdaki gibi bir sınıf oluşturup bu kodu kullanmaya ihtiyacınız var.
































Ignore Attribute

  Bu metodu özellikle yazılan testlerden emin olmadığınız durumlar oluştuğunda, sırf bu testi gözardı ettiğinizi işaretlemek için kullanabilirsiniz. Tek yapmanız gereken bu test metodunu [Ignore] ile süslemek.









































Category Attribute

  En güzel test tecrübelerinden biri de test operasyonlarınızı kategorilere bölmek olacaktır. Bir kategori oluşturmak için [Category] attribute’tan yararlanıyoruz.

Ben yazdığım iki test metodunu iki kategoriye ayırdım.



  Build edip, Test Runner Client’a geçtiğinizde Categories sekmesine iki kategorinin düştüğünü aşağıda görebilirsiniz. Buradan istediğiniz kategori veya kategorileri seçerek testlerinizi daha hızlı sonuçlandırabilirsiniz.































  Bu haftalık anlatacaklarım bu kadar. Haftaya Unit Test yaparken Code Coverage, yani kodun ne kadarının test edildiği konusundan bahsedeceğim. Şimdilik yazımı sonlandırıyorum haftaya tekrar görüşmek üzere hoşçakalın..


Referanslar


Hiç yorum yok:

Yorum Gönder