Nasıl birim test kalıcılığını mı?

oy
43

Test güdümlü gelişimini pratik bir acemi olarak, genellikle bir veritabanına nasıl birim test kalıcılığı ile bir ikilem içinde sonunda.

Ben teknik olarak bu bir entegrasyon testi (bir birim testi) olacağını biliyorum ama aşağıdakiler için en iyi stratejileri öğrenmek istiyorum:

  1. Test sorguları.
  2. uçlar test. Nasıl yanlış gitti ekleme başarısız olursa biliyoruz? Ben taktıktan sonra sorgulayarak test edebilirsiniz, ama nasıl sorgu yanlış olmadığını bilebilir?
  3. Test güncellemeler ve siler - test ekler aynı

Bu iş için en iyi uygulamalar nelerdir?


İlgili test SQL: Bu yapılabilir farkındayım, ama ben gibi NHibernate bir O / R Mapper kullanırsanız, bu çıkış sorguları için kullanılan takma ad bazı adlandırma siğil verdiği ve bu biraz tahmin edilemez olarak emin değilim Bunun için test edebilir.

Sadece her şeyi bırakıp sadece NHibernate güvenmeli? O ihtiyatlı olduğundan emin değilim.

Oluştur 05/08/2008 saat 10:43
kaynak kullanıcı
Diğer dillerde...                            


10 cevaplar

oy
16

DB Birimi içine bakın. Bu bir Java kütüphanesi, ama C # eşdeğer olmalıdır. Bu o zaman veritabanında ne olduğunu görmek için DB Birimi ile arayüz edebilir, veritabanında ne olduğunu böylece bir veri seti ile veri tabanını hazırlamak sağlar. Birçok veritabanı sistemlerine karşı çalışabilir, böylece (bellek seçeneğinde bir ile bir Java veritabanı uygulaması) gerçek veritabanı kurulumunu kullanmak veya Java HSQL gibi başka bir şeyi kullanabilirsiniz.

Eğer kodu (büyük olasılıkla yapıyor olması gereken) düzgün veritabanını kullandığını test etmek isterseniz, o zaman bu hazırlanan veriyi beklenen etmiştir her test yalıtmak gidip veritabanını sağlamak için bir yoldur.

Cevap 11/08/2008 saat 10:40
kaynak kullanıcı

oy
15

As Mike Stone söyledi , DbUnit testlerinizi çalıştırmadan önce bilinen bir duruma veritabanını almak için mükemmeldir. Testlerinizi bittiğinde, DbUnit Eğer testler yaptık önceki haline geri veritabanını koyabilirsiniz.

DbUnit (Java)

DbUnit.NET

Cevap 25/08/2008 saat 14:22
kaynak kullanıcı

oy
4

Sen veritabanı bağlantısı dışarı alay birim test yapmak. Bir yöntem çağrısının akışında özgü sorgular başarılı veya başarısız nereye Bu şekilde, senaryolar inşa edebilirsiniz. SQL özelliklerini, bu amaçla alakasız - gerçek sorgu metni göz ardı edilir, böylece gerçekten yöntemin hata toleransı test etmek istiyorum ve kendisini nasıl işleyeceğini çünkü genellikle, benim sahte beklentileri kurmak.

Açıkçası bu test aslında yöntem olduğunu doğrulamak anlamına gelir çalışır SQL yanlış olabilir, çünkü. Entegrasyon testleri tekme burasıdır. Bunun için ben sadece kendim o vâkıf başlıyorum olarak başkası, daha kapsamlı bir cevap bekliyoruz.

Cevap 05/08/2008 saat 10:47
kaynak kullanıcı

oy
3

Ben ilgili burada bir yazı yazdım veri katmanı test ünitesi tam bu sorunu kapsar. (Utanç verici) fiş için özür dilemek istiyorum ama makale burada göndermek için çok uzun.

o 3 aktif projelerde son 6 ay içinde benim için çok iyi çalıştı - Bunu size yardımcı olur umarım.

Saygılarımızla,

Rob G

Cevap 13/08/2008 saat 00:23
kaynak kullanıcı

oy
2

JDBC tabanlı projeler için, Acolyte çerçeve kullanılabilir: http://acolyte.eu.org . Belirli bir deney DB yönetmek zorunda kalmadan, sen JDBC soyutlama yararlanan, testlerin istediğiniz veri erişimini mockup sağlar.

Cevap 09/07/2014 saat 10:20
kaynak kullanıcı

oy
2

Için NHibernate, kesinlikle sadece dışarı alay savunuyorlar ediyorum NHibernate APIbirim testler için - doğru olanı yapmak için kütüphane güveniyorum. Veri aslında DB gitmesini sağlamaya istiyorsanız, bir entegrasyon testi yapmak.

Cevap 05/08/2008 saat 12:20
kaynak kullanıcı

oy
2

Sorun özellikle bir ORM olmadan, zaman birim test kalıcılığını deneyimli ve böylece veritabanı (bağlantı) alay, sorgularınız başarılı eğer gerçekten bilmiyorum olmasıdır. Bu sizin sorguları özellikle belirli bir veritabanı sürümü için tasarlanmış ve sadece o sürüm ile başarılı olmanız olabilir. Eğer veritabanı alay eğer öğrenmek asla. Yani bence, birim test kalıcılık sadece sınırlı kullanımı gereksizdir. Her zaman hedefli veritabanıyla çalışan testler eklemek gerekir.

Cevap 05/08/2008 saat 11:29
kaynak kullanıcı

oy
1

Genellikle bir depo oluşturmak ve daha sonra, benim varlık kaydetmeye taze bir almak için kullanabilirsiniz. Sonra alınan kaydedilmiş eşittir iddia.

Cevap 27/08/2008 saat 22:17
kaynak kullanıcı

oy
1

sebat Teknik olarak birim testleri onlar Entegrasyon testleri şunlardır Birim testleri değildir.

C # MbUnit kullanarak ile, sadece SqlRestoreInfo ve Rollback özelliklerini kullanmak

    [TestFixture]
    [SqlRestoreInfo(<connectionsting>, <name>,<backupLocation>]
    public class Tests
    {

        [SetUp]
        public void Setup()
        {

        }

        [Test]
        [RollBack]
        public void TEST()
        {
           //test insert. 
        }
    }

Aynı NUnit yapılabilir, excpet nitelik adları slighty farklıdır.

sorgu başarılıydı olmadığını kontrol gelince, normalde beklediğiniz gibi veritabanı değişip değişmediğini görmek için ikinci bir sorgu ile takip etmek gerekir.

Cevap 05/08/2008 saat 12:27
kaynak kullanıcı

oy
1

Ayrıca veritabanı alay ve sorgular beklediğiniz olup olmadığını kontrol ederim. Orada testi yanlış sql denetler risktir, ancak bu entegrasyon testlerinde tespit edilecektir

Cevap 05/08/2008 saat 11:19
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more