Veritabanı mantığını nasıl birim olarak seçebilirim?


12

TDD söz konusu olduğunda hala küçük bir sorunun üstesinden gelmekte sorun yaşıyorum.

Veri katmanından (linq2SQL) filtrelenmiş veri belirli bir kayıt kümesi alacak bir yönteme ihtiyacım var. DBML oluşturulan linq oluşturulan sınıfları kullanıyorum lütfen unutmayın. Şimdi sorun bunun için bir test yazmak istiyorum.

ben:

a) önce kayıtları teste ekleyin, ardından yöntemi yürütün ve sonuçları test edin

b) veritabanında bulunabilecek verileri kullanmak. Bu mantığa meraklı olmamanız, işlerin kırılmasına neden olabilir.

c) ne önerirsiniz?

Yanıtlar:


7

(A) 'daki varyasyon.

Test için kullanılabilecek bir test db veya db alt bölümü bulundurun. Testlerinizi ayarlarken, DB'yi teste başlamak için ihtiyaç duyduğunuz şekilde başlatan bir rutine sahip olun (bu, uygun şekilde her testten önce yapılabilir). Bu, verilerin silinmesini, veri eklenmesini vb. İçerebilir. Ardından testlerinizi yapın. Teardown aşamasında, kendinizden sonra temizleyin. Canlı sistemi bozma riski olmadan gerektiği kadar tekrarlanabilir (başka bir şey için gerekli olan veritabanındaki verileri kullanarak test etmek için iyi bir fikir değildir).


1
İyi cevap. Sqlite kullanarak boşaltma veritabanları oluşturmayı seviyorum. Veritabanı uygulamasına özgü şeyleri (örneğin, tetikleyiciler gibi) test etmek istiyorsanız bu mümkün değildir, ancak hızlı ve zararsız kurulum / yıkıma izin verir.
bogeymin

1
@bogeymin - isterseniz, tetikleyicilerle bir test DB kurabilirsiniz (FixtureSetup sırasında bir komut dosyasıyla tüm db'yi oluşturabilirsiniz)
Yaakov Ellis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.