SORU
28 Mayıs 2009, PERŞEMBE


Birim test benimsenmesi

Şimdiki projemiz için birim testi tanıtmak için denedim ama çalışmak için görünmüyor. Ekstra kod bizim iç Çerçeve etrafında gidip asmak herhangi bir birim testleri çözmek için var değişiklik olarak ne zaman bakım bir baş ağrısı haline gelmiş gibi görünüyor.

Alt sınıflar' denetleyici sınıflarımız Başlatmak böylece Çerçeve aramalar uygulamaları yani soyut yöntem kendi Başlatmak kendi yöntemi var. içine bir şablon arıyorum gibi davranan birimi denetleyicileri test için soyut temel sınıf var

Birim testi bir savunucusu olmak için mevcut proje üzerinde çalışmak için görünmüyor.

Kimseye birim testleri bize karşı bizim için yerine çalışma yapabiliriz nasıl sorunu tanımlamak ve yardımcı olabilir?

CEVAP
29 Mayıs 2009, Cuma


İpuçları:

Prosedürel kod yazma kaçının

Testler eğer ağır genel durum güvenir usul tarzı kurallarına aykırı yazılmış olup olmadıklarını korumak için bir ayı olabilir ya da çirkin bir yöntem derin cesedi yatıyor. Eğer OO bir dilde kod yazıyorsanız, use OO constructs etkili bu azaltmak için.

  • Eğer bu genel durumu önlemek mümkün.
  • Olmaması gereken kod temeli üzerinde dalgalanması ve statik şeyler neden sonunda eğilimindedir statik kaçının. Onlar da test içerik (aşağıya bakınız) kabartmak.
  • İstismar etkili excessive ifs and flags önlemek için polimorfizmi

Ne gibi değişiklikler bulun, saklanması ve aynı kalır ne ayırmak.

Choke çok daha sık diğer parçaları daha değiştirmek kod noktaları vardır. Kod temeli var ve testlerini daha sağlıklı olacaktır.

  • İyi saklama, gevşek iyi tasarımlara yol açar.
  • Yeniden Düzenle ve modularize.
  • Testler küçük ve odaklanmış tutmak.

Büyük bir bağlam test çevreleyen, daha zor sağlamak olacak.

Testleri küçültmek için elinden geleni ve bunlar yürütüldüğü çevre bağlamı.

  • Oluşan yöntemi yeniden düzenleme kodu küçük parçalar test etmek için kullanın.
  • Eğer veya JUnit4 gibi yeni bir test çerçevesi kullanıyorsunuz? Test yaşam döngüsü içine ince taneli kancaları daha sunarak testleri tekrarından kaldırmak için izin verir.
  • Kullanarak test çift (alay, sahte, koçanları) test kapsamında boyutunu araştırmak.
  • Test Data Builder desen araştırın.

Testlerin yinelenmesini kaldırmak, ama odak korumak için emin olun.

Muhtemelen tüm çoğaltılması kaldırmak mümkün olmayacak, ama yine de ağrıya neden bunu kaldırmayı deneyin. Birisi gelemez o kadar çok tekrarını çıkarın ve Testi bir bakışta ne yaptığını söylemiyorsun emin olun. (Paul aynı kavramı alternatif bir açıklama için 3* *madde Wheaton bakın.)

  • Kimse eğer ne yaptığını anlamaya eğer bir test düzeltmek istiyorum.
  • Bu Düzenleme, Hareket, Desen Savunmak izleyin.
  • Test başına sadece bir iddia kullanın.

Doğrulamak için çalışıyoruz ne için doğru düzeyde Test.

Karmaşıklığı kayıt ve oynatma Selenyum testi dahil ve altında değiştir karşı tek bir yöntemi test yapabileceğini düşün.

  • Bağımlılıkları birbirinden ayırmak.
  • Kontrol çevirme/bağımlılık enjeksiyon kullanın.
  • Kullanmak test test etmek için bir nesneyi başlatmak ve izolasyon kod tek birim test emin olmak için iki katına çıkar.
  • Yapmak ilgili testler yazıyorsun emin
    • "Tuzak" kasıtlı bir hata tanıtarak ve bir test tarafından yakalandı alır emin olun. bahar
  • Ayrıca bakınız: Integration Tests Are A Scam

Devlet vs Göre kullanılacak zaman Etkileşim Tabanlı Test

Gerçek birim testleri doğru yalıtım gerekir. Birim testleri bir veritabanı veya açık yuva vurma. Bu etkileşimler alay durdurmak. İşbirlikçilerin düzgün konuş, bu yöntem çağrısından uygun sonucu olduğunu doğrulayın "". 42

Test-Sürüş Kod Göstermek

Ya da değil, belirli bir takım test-sürüş tüm kod ya da" her satır kod için. "testlerinin ilk yazılı alacak olup olmadığı tartışmaya açık bir konu. Ama en azından bazı testler ilk yazmak gerekir? Kesinlikle. Test-ilk şüphesiz bir sorunu yaklaşım en iyi yolu senaryo vardır.

Kaynaklar:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • tseyina

    tseyina

    2 AĞUSTOS 2006