Programım için zaten bir entegrasyon testim varsa ve hepsi geçti, o zaman işe yarayacağına dair iyi bir fikrim var. Öyleyse birim testleri yazmak / eklemek için nedenler nelerdir? Zaten entegrasyon testleri yazmak zorunda olduğum için, sadece entegrasyon testlerinin kapsamadığı kısımlar için ünite testi yazmak istiyorum.
Birim testinin entegrasyon testine faydasını bildiğim şey:
- Küçük ve dolayısıyla hızlı koşmak (ancak bir şeyi test etmek için yeni bir ünite eklemek, entegrasyon testi tarafından zaten test edilmiştir, toplam test takımımın daha büyük ve daha uzun çalışması)
- Hatayı daha kolay bulun çünkü yalnızca bir şeyi test eder (ancak entegrasyon testim başarısız olduğunda her bir parçayı doğrulamak için birim testine başlayabilirim)
- Entegrasyon testinde yakalanmayan hatayı bulun. örneğin maskeleme / ofsetleme hataları. (eğer entegrasyonum tüm testleri test ederse, bu da programımın bazı gizli hatalar olsa bile çalışacağı anlamına gelir. Bu nedenle, gelecekteki entegrasyon testlerini kırmaya başlamadıkça veya performans sorununa neden olmadıkça bu hataları bulma / düzeltme gerçekten yüksek öncelikli değildir)
Ve biz her zaman daha az kod yazmak istiyoruz, ancak birim testleri yazmak için çok daha fazla kod gerekiyor (temelde sahte nesneler kuruluyor) Bazı ünite testlerim ve entegrasyon testlerim arasındaki fark, ünite testlerinde sahte nesne kullandığım ve entegrasyon testlerinde gerçek nesne kullandığım. Çok fazla çoğaltma var ve çoğaltılmış koddan hoşlanmıyorum, testlerde bile bu davranışını değiştirmek için ek yük ekliyor (refactor aracı her zaman her şeyi yapamıyor).