X sınıfınız var ve X1 davranışını doğrulayan bazı birim testleri yazıyorsunuz. X'i bir bağımlılık olarak alan A sınıfı da var.
A için birim testleri yazdığınızda, X ile alay edersiniz. Başka bir deyişle, A birim testi sırasında, X'in alay davranışını X1 olarak ayarlarsınız (varsayılır). Zaman geçiyor, insanlar sisteminizi kullanıyor, değişmesi gerekiyor, X gelişti: X2 davranışını göstermek için X'i değiştirdiniz. Açıkçası, X için birim testleri başarısız olacak ve bunları uyarlamanız gerekecek.
Peki ya A? A'nın birim testleri, X'in davranışı değiştirildiğinde (X'in alayından dolayı) başarısız olmaz. A'nın sonucunun "real" (modifiye) X ile çalıştırıldığında farklı olacağını nasıl tespit edebilirim?
"Bu, ünite testinin amacı değil" hattı boyunca cevaplar bekliyorum, fakat ünite testinin değeri nedir? Gerçekten, sadece tüm testler geçtiğinde, hiçbir değişiklik getirmediğinizi söylüyor mu? Ve bazı sınıfların davranışları değiştiğinde (isteyerek veya istemeyerek), tüm sonuçları (tercihen otomatik olarak) nasıl tespit edebilirsiniz? Entegrasyon testine daha fazla odaklanmamalı mıyız?
X1
bunun X
arayüzü uyguladıklarını söylüyorsunuz X1
. Eğer arayüz değiştirirseniz X1
için X2
artık derlemek olmamalıdır diğer testlerde kullanılan mock, dolayısıyla siz de bu testler düzeltmek zorunda kalıyor. Sınıf davranışındaki değişiklikler önemli olmamalıdır. Aslında, sınıfınız A
uygulama ayrıntılarına (bu durumda neyi değiştireceğinize) bağlı olmamalıdır. Bu nedenle, birim testleri A
hala doğru ve size A
arayüzün ideal bir uygulaması verilen çalışmaların olduğunu söylüyorlar .