Sorunun tarihçesi:
Arrange-Act-Assert (AAA) deseninin, testlerin yapısını basitleştirmek ve okunabilirliğini artırmak amacıyla önerildi. Bu desen, modern test çerçevelerinde yaygın olarak kullanılmakta ve her tür otomatik test yazımında de-facto standart halini almıştır.
Sorun:
Açık bir yapının olmaması durumunda, test vakaları hacimli, zor okunur ve bakımı zor hale gelir. Veri hazırlığı, test edilen davranışın çağrılması ve sonuçların kontrolü arasında karmaşa oluşur. Bu, teknik borcun birikmesine ve testlerde hatalara yol açar.
Çözüm:
Test yazarken AAA desenine kesinlikle bağlı kalmak.
Anahtar özellikler:
Test belirgin görünüyorsa AAA sırasını ihlal edebilir mi?
Genellikle hayır. AAA yapısından herhangi bir sapma, diğer geliştiriciler için testin okunabilirliğini azaltır ve bakımda hatalara karşı daha savunmasız hale getirir.
Kısa testler için Act ve Assert'i tek bir ifadede birleştirmek uygun mu?
Bundan kaçınmak daha iyidir, çünkü bu testin anlaşılmasını ve gelecekte genişletilmesini zorlaştırır.
Datanın temizleme (cleanup) mantığını Arrange aşamasına dahil etmek gerekli mi?
Hayır. Cleanup veya Teardown genellikle test çerçevesinde ayrı yöntemler olarak uygulanır (After, AfterEach gibi).
Veritabanına kayıt ekleyen bir test, önce kontrol yapar ve ardından kaydı ekler. Orta kısımda rastgele bir assert var.
Artılar:
Eksiler:
Test verilerin temizlenmesiyle başlar, ardından kayıt eklenir ve sadece bundan sonra sonuç kontrol edilir, tam olarak AAA'ya uygun olarak.
Artılar:
Eksiler: