Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan yazılım eğitim serisinin bir parçasıdır. Eğitmen, daha önce Spring Boot ile "Fox Dev Bank" adlı bir banka uygulaması geliştirdiğini ve bu uygulamaya unit test eklemediğini belirtiyor.
- Video, Java tabanlı programlarda unit testin önemini vurgulayarak başlıyor ve IntelliJ IDEA kullanarak test sınıfı oluşturma sürecini adım adım gösteriyor. Eğitmen, Mockito kütüphanesi kullanarak yalancı servisler oluşturma, test senaryoları yazma ve test metodlarının nasıl yapılandırılacağı konularını detaylı şekilde anlatıyor. Özellikle account service ve customer service sınıflarının test edilmesi için gerekli kod örnekleri ve açıklamalar sunuluyor.
- Eğitim içeriğinde ayrıca Mockito'nun nasıl çalıştığı, verify metodunun kullanımı, Lombok'un @EqualsHashCode metodunun önemi ve iki farklı test senaryosunun yazılması gibi konular da ele alınıyor.
- 00:07Unit Test Kavramı ve Önemi
- Yazılım 101 kursunun son dersinde sıfırdan bir bank uygulaması (Fox Dev Bank) Spring Boot ile yapılmıştır.
- Bu projeye unit test eklenmemiştir, ancak Java tabanlı programlarda unit test çok önemli bir konudur.
- 00:42Test Sınıfı Oluşturma
- IntelliJ IDEA'da test sınıfı oluşturmak için servis sınıfında Ctrl+Shift+T tuşlarına basılır.
- Test sınıfı oluşturulurken "Create new test" seçeneği ile JUnit 4 kullanılır ve "AccountServiceTest" adı verilir.
- Test sınıfında setup metodu istenir çünkü her test senaryosu çalıştırılmadan önce ortak işlemler yapılmalıdır.
- 01:56Servis Objesi Oluşturma
- Test etmek istediğimiz servisin objesi private olarak tanımlanır ve before metodu içerisinde doldurulur.
- Servis objesine ihtiyaç duyulan nesneler (AccountRepository, CustomerService, AccountDtoConverter) private final olarak tanımlanır.
- Mockito kütüphanesi kullanılarak yalancı servisler (mock) oluşturulur ve bu servislerin davranışları testin kontrolünde tutulur.
- 05:31Test Senaryoları Yazma
- Test senaryosu yazmak için @Test annotation'ı kullanılır ve test sınıfı metodları public ve void olmalıdır.
- Test senaryoları "should" ile başlamalı ve metot ismi ile senaryo ismi birlikte yazılmalıdır.
- Test senaryolarında önce veriler (request, model) oluşturulur, sonra servislerin davranışları belirlenir ve sonuçlar karşılaştırılır.
- 09:36Mockito ve Unit Test Çalışma Prensibi
- Mockito, unit test çalıştırıldığında yalancı servisi çalıştırır ve test senaryosunda belirtilen parametre ile çağrıldığında belirli bir davranış sergiler.
- Mockito test yazılım şekli genellikle önce dataları oluşturup, ardından van kısımlarını ve asset'leri yazarak ilerler.
- Test senaryosunda dışarıya çıktığımız her noktada (custom servis, account repository, account DTO) mockito van yazmak gerekir.
- 11:34Test Senaryosu Oluşturma
- DTO converter için convert metodunu çağırıp, account parametresi ile account DTO döndürmesini bekleriz.
- Test senaryosunda servisin metodunu çağırdıktan sonra, beklenen sonuç ile gerçek sonuç arasında karşılaştırma yapılır.
- Asset sınıfı ve asset.equals metodu kullanılarak iki değerin eşit olup olmadığı karşılaştırılır, eşit değilse test başarısız olur.
- 13:34Mockito Verify Metodu Kullanımı
- Mockito verify metodu ile yalancı servislerin çağrılıp çağrılmadığı kontrol edilir.
- Mockito verify metodunda sadece mock'u verip, verify içerisine parametre olarak nokta get customer metodu gibi çağırma fonksiyonunu yazmak gerekir.
- Test senaryosunda hem sonuç eşitliği hem de çağrılan metodların kontrolü yapılır.
- 16:10Test Çalıştırma ve Hata Ayıklama
- Test çalıştırıldığında, modelin içerisinde equals metodu olmadığı için nesne eşleştirilmesi yapılamaz ve test başarısız olur.
- Lombok'un equals ve hash metodlarını otomatik olarak yaratması için @EqualsHashCode eklenir.
- İkinci test senaryosu için customer service'ten none exit customer durumunda empty account döndürmesi beklenir.