Kısa bir zaman önce keşfettiğim java kütüphanesinden bağsedeceğim. Gerçekten çok yetekli. Yazmak istediğiniz bir çok zorlu test için son derece iyi çözümler üretiyor. Hemen adınıda verelim. Adı Testcontainers.
Kendisini
Testcontainers, JUnit testlerini destekleyen, ortak veritabanları, Selenium web tarayıcıları ya da Docker konteynerinde çalışabilen şeyleri test etmeyi sağlayan bir Java kütüphanesidir.
diye tanıtıyor.
Testcontainersı kullanmak için bilgisayarınızda Docker kurulu olması lazım. Testleri yapmak için docker üzerinde image ayağa kaldırıyor ve işini bitirdikden sonra bu imageyi siliyor.
Örnek :
Sorun : Selenium test yazdık fakat başlayıp bitmesi bir kaç dakika alıyor. Örnek olarak 10 dakika diyelim. Testi çalıştırdık sonra tüm testlerin tamamlanmasını beklememiz 10 dk. Fakat bu gerçekten çok uzun bir zaman. Yapacağımız örnekte bir test metodu yazacağız ve bu test metodunun video kaydını alacağız. Bu testler çalışırken yerimizden kalkıp bir kahve molası verebiliriz 🙂
Çözüm :
Projeye bağımlılık olarak
- Selenium kütüphanesi -> Tarayıcı otomasyon testleri için
- Slf4j kütüphanesi -> Loglar için
- Junit kütüphanesi -> Testler için
- Testcontainers selenium -> Docker image üzerinde testleri çalıştırmak için
ekledim.
@Rule anotasyonu ile BrowserWebDriverContainer web driver olarak tanımlıyoruz. Tarayıcı olarak Chrome. Recording modu sadece hata olunca video kaydet ve dizini target olsun diye ayarlıyoruz. Testimiz bu kuralı kullanacak. Siz isterseniz recording modu değiştirerek tüm testleri kayıt edebilirsiniz.
Test metodumuz çok basit.
Google’ ı açıp batuhankucukali.com u arıyor ve sonuç sayfasındaki title da selenium geçiyormu diye kontrol ediyor. Test başarısız oluyor ve bu başarısız testi target klasörüne kayıt ediyor.
Testcontainer Avantajları :
- Test yaparken kullandığımız embeded veritabanı örnek vermek gerekirse H2 postgres’in desteklediği tüm veri tiplerini desteklemiyor. Bu yüzden test yaparken belli şeyleri göz ardı edebiliyoruz. Testcontainers kullandığınız veritabanının tüm özelliklerini kullanıp test edebilirsiniz.
- Selenium ile yazdığınız testlerde geliştirme ortamınıza tarayıcıları ve bunları kullanmak için gerekli driverları kurmak zorunda değilsiniz. Ayağa kalkan image üzerinde hazır bulunuyor.
- Uzun testlerde hataları kayıt altına alabiliyoruz.
Diğer tüm avantajları buradan keşfedebilirsiniz.
Yukarıdaki örneğe buradan https://github.com/BatuhanKucukali/selenium-vnc-testcontainers-example ulaşabilirsiniz.
Yorumlar