Nasıl birim test sebat mı?
test odaklı geliştirme pratik bir acemi olarak, sık sık bir veritabanına test kalıcılığını birim nasıl bir quandary sonunda.
teknik olarak bunun bir entegrasyon testi (birim testi değil) olacağını biliyorum, ancak aşağıdakiler için en iyi stratejileri öğrenmek istiyorum:
- test sorguları.
- test uçları. Başarısız olursa yanlış giden insertin nasıl olduğunu nasıl bilebilirim? Bunu test edebilirim ekleme ve sorgulama, ancak sorgunun yanlış olmadığını nasıl bilebilirim?
- test güncellemeleri ve siler - test ekleriyle aynı
bunları yapmak için en iyi uygulamalar nelerdir?
test SQL ile ilgili olarak: bunun yapılabileceğinin farkındayım, ancak NHibernate gibi bir O / R Mapper kullanırsam, çıktı sorguları için kullanılan takma adlara bazı adlandırma siğilleri ekler ve bu şekilde biraz öngörülemeyen bunun için test edebileceğimden emin değilim.
Ben sadece, her şeyi terk ve sadece NHibernate güvenmeli? Bunun ihtiyatlı olduğundan emin değilim.
10 ответов
DB ünitesine bakın. Bir Java kütüphanesidir, ancak bir C # eşdeğeri olmalıdır. Veritabanında ne olduğunu bilmek, böylece veri kümesi ile veritabanı hazırlamak sağlar, o zaman veritabanında ne olduğunu görmek için DB birimi ile arabirim yapabilirsiniz. Birçok veritabanı sistemine karşı çalışabilir, böylece gerçek veritabanı kurulumunuzu kullanabilir veya Java'da HSQL gibi başka bir şey kullanabilirsiniz (bellek seçeneğinde bir Java veritabanı uygulaması).
bunu test etmek istiyorsanız, kod, veritabanını düzgün bir şekilde kullanıyor( büyük olasılıkla yapmanız gereken), o zaman bu, her testi izole etmenin ve veritabanının hazırlanmış verileri beklediğinden emin olmanın yoludur.
veritabanı bağlantısını alay ederek birim testini yaparsınız. Bu şekilde, bir yöntem çağrısı akışında belirli sorguların başarılı olduğu veya başarısız olduğu senaryolar oluşturabilirsiniz. Genellikle sahte beklentilerimi oluşturuyorum, böylece gerçek sorgu metni göz ardı ediliyor, çünkü yöntemin hata toleransını ve kendisini nasıl işlediğini test etmek istiyorum-SQL'İN Özellikleri Bu amaçla alakasız.
Açıkçası bu, testinizin aslında doğrulamayacağı anlamına gelir SQL yanlış olabilir çünkü yöntem , çalışır. Entegrasyon testlerinin başladığı yer burası. Bunun için, başka birinin daha kapsamlı bir cevabı olmasını bekliyorum, çünkü ben sadece kendimle başa çıkmaya başlıyorum.
umarım size yardımcı olur-3 aktif projede son 6 ayda benim için çok iyi çalıştı.
Saygılar,
Rob G
birim test kalıcılığı, özellikle bir ORM olmadan ve böylece veritabanınızı (bağlantı) alay ederken yaşadığım sorun, sorgularınızın başarılı olup olmadığını gerçekten bilmediğinizdir. Bu sizin sorguları özellikle belirli bir Veritabanı Sürümü için tasarlanmış ve sadece bu sürümü ile başarılı olabilir. Veritabanınızı alay ederseniz bunu asla öğrenemezsiniz. Yani bence, birim test kalıcılığı sadece sınırlı kullanım içindir. Her zaman karşı çalışan testler eklemelisiniz hedeflenen veritabanı.
teknik olarak persistance birim testleri, entegrasyon testleri olan birim testleri değildir.
c # mbUnit kullanarak, sadece Sqlrestoreınfo ve Geri Alma özniteliklerikullanın
[TestFixture] [SqlRestoreInfo(<connectionsting>, <name>,<backupLocation>] public class Tests { [SetUp] public void Setup() { } [Test] [RollBack] public void TEST() { //test insert. } }
aynı nunit yapılabilir, öznitelik adları slighty farklıdır excpet.
sorgunuzun başarılı olup olmadığını kontrol etmek için, normalde veritabanının beklediğiniz gibi değişip değişmediğini görmek için ikinci bir sorgu ile izlemeniz gerekir.