JavaFX Otomatik Testleri

JavaFX Otomatik Testleri

LogoRRR'ı TestFX ile test edin

LogoRRR, JavaFX kullanıcı arayüzüne karşı entegrasyon testleri çalıştırmak için TestFX kullanmaktadır. Bu testler, temel iş akışlarının yeni özellikler, yeniden yapılandırmalar ve bağımlılık güncellemelerinden sonra sağlıklı kaldığına dair güvence sağlar — ve birim testlerinin göremeyeceği gerilemeleri yakalar.

Neden şimdi

20’den fazla sürümün ardından LogoRRR, yalnızca manuel testin artık yetmeyeceği kadar karmaşık bir hale gelmişti. Kod tabanının bir güvenlik ağına ihtiyacı vardı. TestFX, JUnit test metotlarından gerçek uygulama penceresini — düğmelere tıklayarak, dosyalar açarak, kullanıcı arayüzü durumunu inceleyerek — yönetmeyi mümkün kılmaktadır.

Uçtan uca testlere ne zaman yatırım yapılacağına karar vermek her zaman bir takas dengesidir. Bir projenin başında kullanıcı arayüzleri testlerin ayak uyduramayacağı kadar hızlı değişir. Ancak temel akışlar bir kez istikrar kazandığında testler yük olmaktan çıkar ve bir ivme kazandırıcıya dönüşür. Bu dönüm noktası 24.3.0 ile birlikte geldi.

Uygulama

Scala’nın özlü sözdizimi, küçük bir test DSL’i oluşturmaya doğal biçimde uyum sağlar. Her atomik eylem — bir dosya açmak, kapat düğmesine tıklamak, sekme bölmesinin boş olduğunu doğrulamak — okunabilir bir yapı taşı haline gelir:

@Test def openAndCloseTab(): Unit = {
    checkForEmptyTabPane()
    openFile(path)
    checkForNonEmptyTabPane()
    clickOn(lookup(UiNodes.LogFileHeaderTabs).query[StackPane](), MouseButton.SECONDARY)
    waitAndClickVisibleItem(CloseTabMenuItem.uiNode(fileId))
    checkForEmptyTabPane()
}

Ön yüz testleri yazmak, üretim kodunda da iyileştirmeleri zorunlu kıldı. Dosya G/Ç ve dış süreç çağrılarını soyutlamak için yeni bir Service katmanı eklendi — bu değişiklikler herhangi bir test faydasından bağımsız olarak mimariyi de geliştirdi.

Testlerin yakaladıkları

  • Uygulama kapanış davranışı — hiçbir zaman düzgün temizlenmeyen kaynaklar test altında belirginleşti
  • Test yalıtımı — her testin kendi durumunu kurması ve temizlemesi gerekmesi, paylaşılan kullanıcı arayüzü durumuna ilişkin çeşitli gizli varsayımları gün yüzüne çıkardı
  • Performans temeli — test yürütme süresine dikkat etmek, yavaş testlerin zamanla birikmesini önler
TestFX, LogoRRR test paketini çalıştırıyor — bir kullanıcının gerçekleştireceği etkileşimlerin aynısı, otomatik olarak yürütülüyor

Başlık fotoğrafı: Sora Shimazaki, Pexels.