Flutter Integration Testing Nasıl Yapılır?

Merhabalar bu yazımda Flutter ile integration testing konusu üzerinde ufak bir başlangıç yapacağız. Instagration testing; robot bir kullanıcının uygulamanızı kullanıyormuş gibi test etmesini sağlar. Böylelikle uygulamanızda karşılaşacağınız hataları minimum seviyeye indirmenizi sağlar. Integration Test  ile bir uygulamanın kullanıcıların beklediği gibi çalıştığından emin oluruz.

pubspec.yaml dosyamıza aşağıdaki kodu ekliyoruz;

Proje dosyamıza integration_test/integration_test.dart diye klasör ve dart dosyası oluşturuyoruz.

Integration testlerde en önemlisi widgetlara key vermektir.

Mesela benim API ile çektiğim kitap listesinden oluşan bir uygulamam var ve bir kitabı favorilere eklemek için Add ikonuna bir key verdim.

integration_test/integration_test.dart dosyamda bu IconButton’a tıklamak için aşağıdaki kodu ekliyorum.

.first diyerek listelenen kitaplardaki ilk öğeye tıkla demiş oluyorum.

Başka bir Örnek –

Uygulamamda Dark/ Light Tema değişimini test etmek istiyorum diyelim.

Provider ile tema değişimi yaptığım bir butonum var. Bu butona ” key: const Key(“darkLight”),” şekilde bir key verdim.

Bu butonumu aşağıdaki gibi uygulamadaki Appbar’daki actions içerisine ekledim.

ve integration_test/integration_test.dart dosyasına aşağıdaki kodu ekledim.

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  testWidgets("Dark/Light Geçiş Başarılı", (WidgetTester widgetTester) async {
    app.main();
    await widgetTester.pumpAndSettle();
    await widgetTester.tap(find.byKey(const Key("darkLight")));
    await Future.delayed(const Duration(seconds: 3));
    await widgetTester.tap(find.byKey(const Key("darkLight")));
    await Future.delayed(const Duration(seconds: 3));
  });
}

Vscode ile Testing menüsünden yukarıdaki adımları takip ederseniz uygulama açılır. Dark/Light butonuna bir kere tıklar, sonra 3 saniye bekledikten sonra bir kere daha tıklayıp uygulamayı simulate edersiniz.

Kaynakça: https://docs.flutter.dev/cookbook/testing/integration/introduction

Not: Bu konuda kendimi geliştirdikçe burayı güncelleyeceğim, henüz tam olarak bu konuda uzmanlaşmış değilim.

Paylaş:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir