Flutter ve Unit Testing

İkinci yazımdan merhaba arkadaşlar.


İlk yazımda Flutter ve Provider mimarisi'nden bahsetmiştim. İkinci yazımda ise biraz testing konusu üzerinde durmak istiyorum.



Bazen developerlar testing konusunu gereksiz bulur ve sadece geliştirmeye odaklanır. Geliştirilen kod için test yazılmaması kısa süre içerisinde zaman kazanmak için iyi bir yol gibi görünse de uzun vadede çok daha vakit kaybettirebilir. Çünkü kodunuzu her refactor edişinizde veya yeni bir feature eklediğinizde istenmeyen yan etkiler çıkabilir ve siz bunun neden kaynaklandığını bulana kadar Sherlock Holmes olursunuz.


Flutter testing konusunda developer’ların yüzünü güldüren bir desteğe ve package’lere sahip. Bu yazıda örneklerle aşağıdaki başlıkları açıklayacağım.

  1. Unit testing

  2. Mocking

  3. Widget’larda unit testing

Yukarıdaki testing yöntemlerini her ne kadar Flutter için yazmış olsam da aslında arkasındaki metodoloji; dil, yapı, kütüphane fark etmeksizin yazılımın her yerinde uygulanıyor.


Unit Testing


Unit testing, fonksiyon, class vs. gibi yapıları kendi başlarına test ettiğimiz bir test türüdür. Olası tüm durumlara maruz bırakarak fonksiyonun düzgün çalışıp çalışmadığına bakılır. Örnek verecek olursak diyelim ki kullanıcıdan websitesi url'ini girmesini isteyeceksiniz ve girilen text’in websitesi olup olmadığını validate edecek bir fonksiyon yazacaksınız. Unit testing yaparken aşağıdaki senaryoları düşünmeniz gerekir:

  1. Kullanıcı hiçbir şey yazmadı

  2. Kullanıcı Türkçe (veya özel) karakter kullandı

  3. Kullanıcı linki yazarken nokta kullanmadı

  4. Kullanıcı “http://” kullanarak doğru bir websitesi linki yazdı

  5. Kullanıcı “http://” kullanmadan doğru bir websitesi linki yazdı

  6. Kullanıcı linki yazarken boşluk kullandı


Yukarıdaki senaryolar için örnek bir input bulursunuz ve fonksiyonu her biri için test edersiniz. Böylece fonksiyonun doğru çalıştığından emin olmuş olursunuz. Şimdi unit testing kavramı kafanıza oturduysa bunu pratikte nasıl yapacağımıza bakalım.


Flutter ve Unit Testing


Flutter bize unit testing konusunda çok büyük kolaylıklar sağlamakta. Öncelikle test kütüphanesini kullanmak için pubspec.yaml dosyamıza dev dependency olarak ekliyoruz.



Devamında test dosyamızı oluştururken IDE’mizin işimizi kolaylaştırması için test edilecek dosya adı sonuna “_test” son ekini koymamız gerekiyor. Örnek vermek gerekirse test edeceğimiz class validation.dart dosyasında olsun, onun testini validation_test.dart dosyasında yapıyoruz.