Ünite testleri sadece tasarımı kolaylaştırmakla kalmaz, aynı zamanda temel faydalarından biridir.
İlk önce test yazma modülerliği ve temiz kod yapısını ortaya çıkarır.
İlk önce kodunuzu yazdığınızda, belirli bir kod biriminin "koşullarının", kodunuzda varsaydığınızda doğal olarak bağımlılıklara (genellikle alay veya saplamalar aracılığıyla) itildiğini göreceksiniz.
"Verilen koşul x, davranış y'yi bekle", genellikle, x
( testin mevcut bileşenin davranışını doğrulaması gereken bir senaryodur ) tedarik y
etmeye zorlanacak ve bir arama doğrulanacak olan sahte olacaktır. Testin sonu (bir "dönmesi gerekir" olmadıkça y
, bu durumda test sadece dönüş değerini açıkça doğrular).
Sonra, bu birim belirtildiği gibi davrandığında , keşfettiğiniz bağımlılıkları (ve x
ve için y
) yazmaya devam edersiniz.
Bu, temiz, modüler bir kodun yazılmasını çok kolay ve doğal bir işlem haline getirir; aksi halde sorumlulukları ve çift davranışlarını bulanıklaştırmadan birlikte gerçekleştirmek genellikle kolaydır.
Testleri daha sonra yazmak, kodunuzun ne zaman zayıf yapılandırıldığını size söyleyecektir.
Bir kod parçası için testler yazmak zorlaştığından, saplanacak ya da alay edilecek çok fazla şey olduğu için ya da şeyler birbirine çok sıkı bir şekilde bağlı olduğu için, kodunuzda yapılacak iyileştirmelerin olduğunu biliyorsunuzdur.
Tek bir ünitede çok fazla davranış olduğu için “testleri değiştirmek” bir yük haline geldiğinde, kodunuzda (veya sadece test yazma yaklaşımınızda - fakat bu genellikle benim deneyimimde geçerli değil) geliştirmeniz gerektiğini biliyorsunuz. .
Senin senaryoları çok karmaşık hale ne zaman ( "eğer x
ve y
ve z
sen soyut daha fazla gerektiğinden, bilirsin ... sonra") kodunuzda yapmak iyileştirmeler var.
Çoğaltma ve fazlalık nedeniyle aynı testler iki farklı fikstürde yapıldığında, kodunuzda yapılacak iyileştirmelerin olduğunu biliyorsunuzdur.
İşte kodlama ile test edilebilirlik ve tasarım arasında çok yakın bir ilişki olduğunu gösteren Michael Feathers'ın mükemmel bir konuşması (yorumlarda ilk olarak displayName tarafından gönderildi). Konuşma ayrıca, genel olarak iyi tasarım ve test edilebilirlik hakkındaki bazı yaygın şikayetleri ve yanlış anlamaları da ele almaktadır.