2010-05-05 26 views
7

Bir "en iyi uygulama" var mı yoksa standart GORM işlevselliğinin birim/işlev testlerinde ne kadar test etmesi gerektiğine dair standart var mı?GORM'in test edilmesi ne kadar?

Benim almam, muhtemelen alan testlerinin çoğunu fonksiyonel testler olarak yapması gerektiğidir, böylece tam grils ortamını elde edersiniz. Ama ne test ediyorsunuz? Ekler, güncellemeler, siler? Muhtemelen daha iyi bir şekilde sınanarak sınanmış olsa bile kısıtları test ediyor musunuz?

Yoksa GORM'in ne yapması gerektiğini ve uygulamanın diğer bölümlerine geçtiğini mi düşünüyorsunuz?

cevap

5

Genel kural yazdığım şeyi test etmektir. Bu nedenle, eğer özel yöntemler (veya kapaklar) yazarsam, o zaman bunları test ederim. Bu kural ayrıca, kısıtlamaları yazdığımdan beri kısıtlamaları test edeceğim anlamına gelir. Bunun için GrailsUnitTestCase içinde mockForConstraintsTests() yöntemini kullanıyorum.

bir örnek kısıtlamaları engellemek:

static constraints = { 
     location(blank:true, nullable:true) 
     make(blank:false, nullable:false) 
     name(blank:false, nullable:false) 
     serviceTag(nullable:true) 
     purchaseDate(blank:false, nullable:false) 
     checkedDate(blank:false, nullable:false) 
     warrantyExpirationDate(nullable:true) 
     notes(blank:true, nullable:true) 
    } 

aşağıdaki kısıtlamalar birim testi olurdu:

void test_null_constraints_are_checked() { 
     mockForConstraintsTests(Hardware) 
     def hardware = new Hardware() 
     assertFalse hardware.validate() 

     assertEquals 4, hardware.errors.getFieldErrorCount() 
     assertEquals "nullable", hardware.errors["name"] 
     assertEquals "nullable", hardware.errors["checkedDate"] 
     assertEquals "nullable", hardware.errors["purchaseDate"] 
     assertEquals "nullable", hardware.errors["make"] 
} 

Bu hemen benim kısıtlamaları üzerinde yazım hatasıyla yakalayacak.

Alanda kaydetme, oluşturma, güncelleme ve silmeyi sınamıyorum; Eğer bunlar başarısız olursa o zaman daha büyük problemlerim var!

+0

Hiç ilişkilerini 1-M vb. Test eder misiniz? –

+0

Onları doğrudan ünitede denediğimi söyleyemem. Genellikle onları entegrasyon düzeyinde alırım. – zentuit

1

Şahsen, kurulumla% 100 rahat olmadığım tüm karmaşık ilişkileri ve varsayılan uygulamanın üzerine yazdığı tüm erişimcileri test ederim.

+0

Makul görünüyor, sadece kodum yerine GORM'i test ettiğim için endişeleniyorum. Bir şeye bakma yolunda, eşlemeler kodumun bir parçası ve ben bunu test ediyorum. –