Kesinlikle. Bazı insanlar "herhangi bir testin hiç testten daha iyi olmadığını" söylüyor. Kesinlikle katılmıyorum - kötü yazılan testler geliştirme zamanınızı düşürür ve ilk etapta iyi bir birim test olmadıkları için "kırılmış" testler yaparak günlerinizi boşa harcarsınız. Şu anda benim için, testlerimi bir yük yerine değerli kılmak için odaklandığım iki şey:
İdame
Sonucu test etmelisiniz ( ne olur), metodu değil ( nasıl olur). Test için kurulumunuz, uygulamadan mümkün olduğunca ayrılmalıdır: yalnızca kesinlikle gerekli olan servis çağrıları için sonuçları ayarlayın.
- Testlerinizin harici hiçbir şeye bağlı olmadığından emin olmak için alaycı bir çerçeve kullanın
- Favorileri alaylar üzerine taslakları (eğer çerçeveniz birbirinden ayırt ederse)
- Testlerde mantık yok! Ifs, anahtarlar, mobilyalar, kılıflar, try-catch'ler vs. test kodunun içine böcek sokabilecekleri için no-noos'tur.
Okunabilirlik
Testlerinizde, normalde üretim kodunuza izin vermeyeceğiniz testlerden biraz daha fazla tekrarlamaya izin vermek, onları daha okunaklı kılmaksa sorun değil. Sadece bunu yukarıdaki bakım malzemeleriyle dengeleyin. Testin ne yaptığını açıkça belli edin!
- Testleriniz için "düzenleme, hareket etme, iddialı" bir tarz sunmaya çalışın. Bu, senaryonun kurulumunu ve beklentilerini, gerçekleştirilen eylemden ve iddia edilen sonuçtan ayırır.
- Test başına bir mantıksal iddiada bulunun (eğer testinizin adında "ve" varsa, bunu birden fazla teste ayırmanız gerekebilir)
Sonuç olarak, "koklamak" testleri ile çok fazla ilgilenmelisiniz - onlar sadece zamanınızı boşa harcayabilir, değer veremezler.
Sen söyledin:
Birim testi genellikle, taslaklama fonksiyonları gibi çeşitli "koklama korsanları" gerektirir.
Hayatınızı çok daha kolay hale getirmek için Mocking framework kullanmak gibi bazı Unit Test tekniklerini okumakla kesinlikle başa çıkmış gibisiniz. Çok daha fazlasını ve çok daha fazlasını içeren “Birim Test Sanatı” nı şiddetle tavsiye ederim . Kötü yazılmış, sürdürülemez, "koklamak" testleriyle uzun süre mücadele ettikten sonra aydınlatıcı buldum. Bu yıl yaptığım en iyi zaman yatırımlarından biri!