Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir yazılım geliştiricisi tarafından sunulan unit test yazma ve Entity Framework kullanımı hakkında kapsamlı bir eğitim içeriğidir. Eğitmen, test yazmayı çok sevdiğini ve son bir yıldır sürekli test yazdığını belirtmektedir.
- Video, unit test yazma sürecini adım adım göstermektedir. İlk bölümde repository kısmının test edilmesi için yeni bir test projesi oluşturulması, client validatör testi ve Unity of Work deseni kullanılarak veri erişim katmanının test edilmesi anlatılmaktadır. İkinci bölümde ise Entity Framework ile mock veritabanı setup yapma, mock DB Context ve DB Set oluşturma, find fonksiyonu ve fake veri oluşturma teknikleri detaylı olarak gösterilmektedir.
- Eğitim içeriğinde test yazarken dikkat edilmesi gereken noktalar, hata mesajlarını ekrana yazdırma yöntemleri ve test kapsamının üç temel bileşeni (arrange, action, assert) açıklanmaktadır. Ayrıca client nesnesi ekleme ve düzenleme işlemlerinin test edilmesi de videoda yer almaktadır.
- 00:01Unit Test Yazma Önemi
- Konuşmacı unit test yazmayı çok sevdiğini ve son bir yıldır sadece test yazdığını belirtiyor.
- Normalde test sınıfı yazarken aynı zamanda class'ı da yazıyor ve böylece class'ı testin içerisinde çalıştırıyor.
- Unit test yazarken önce en alt katmandaki repository kısmını test etmek gerektiğini vurguluyor.
- 01:49Test Sınıfı Oluşturma
- Yeni bir test projesi oluşturarak "entities test" adını veriyor.
- Test yazarken kapsam üçe ayrılıyor: önce ortam ayarlaması (arrange), ardından action ve son olarak asset ile bağlama.
- Client validation testi yapmak için önce bir client nesnesi yaratmak gerekiyor.
- 03:55Validation Testi
- Free Validation adlı bir nugget paketi kullanarak validation testi yapıyor.
- Client nesnesinin içerisindeki client name ve client title boş olduğunda validation başarısız oluyor.
- Can pass ve can not pass testlerini yaparak, false değerlerin de test edilmesi gerektiğini vurguluyor.
- 07:54Debug Modu Kullanımı
- Birden fazla hata varsa ekrana debug modunda veri yazmak için Debug.WriteLine ve Debug.Trace metodlarını kullanabilirsiniz.
- Debug.Trace, hata mesajlarını debug trace'in içerisinde gösterir.
- İlk test, repository için en önemli şeylerden biri olan validation repository testidir.
- 09:07Repository Testi
- Yeni bir test projesi oluşturarak "unit of work test" adını veriyor.
- Entity Framework'lerde test yapabilmek için moklama yapmak gerekiyor.
- Unity of Work nesnesi içerisinde NTR context'i talep ediyor, ancak test sırasında gerçek veritabanına bağlanmadan sanal ortam hazırlamak daha etkili.
- 12:17Moklama Kullanımı
- Moklama için Nugget'dan "Mock" adlı bir paket kullanılıyor.
- Sanal ortam hazırlamak için bir liste oluşturuluyor ve içine veriler atanıyor.
- Repository üzerinden bu veriler çekilmeye çalışılıyor.
- 14:31Entity Framework ile Mock DB Context Oluşturma
- Mock DB context ve DB set oluşturuluyor, bu fake veritabanları client'a veriliyor.
- Entity Framework ile setup yapma işlemi zorlayıcı çünkü setin ihtiyaç duyduğu fight özelliği, que get antor özelliği gibi durumları setup etmek gerekiyor.
- Mock DB set içerisinde setup yapılıyor, find fonksiyonu çağrıldığında client nesnesi içerisindeki id'ye göre sonuç döndürülüyor.
- 21:44Unit of Work ve Testler
- Unit of work'teki find fonksiyonu test ediliyor ve client nesnesi null olamaz, asset is true ve id, title değerleri kontrol ediliyor.
- Fake atmamak için check from id fonksiyonu kullanılıyor ve none value olarak ayarlanıyor.
- Test setup yazarak bu işlemleri bir kere de tanımlayabilirsiniz.
- 24:14Business Testleri
- Business testleri için client can not be no testi yapılıyor ve arrange ile unit of world ve servis manager oluşturuluyor.
- Client nesnesi eklenirken title değeri kontrol ediliyor ve hata döndürülüyor.
- Client can edit testinde yeni bir client ekleniyor, client id'si max client id'ye 1 eklenerek belirleniyor ve created time Time.Now olarak atanıyor.
- 33:31Test Sonuçları
- Client eklendikten sonra asset is true, restaki statüs ve message boş olması kontrol ediliyor.
- Eklenen client nesnesinin id'si sıfırdan farklı, name ve title değerleri doğru olması test ediliyor.
- Debug writeline ile client id'si ekrana yazdırılıyor ve test sonuçları kontrol ediliyor.