SORU
16 EKİM 2010, CUMARTESİ


'java/scala için t emmek değil bu dbunit gibi bir çerçeve var mı?

Hafif yeni veritabanı nüfusu bir çerçeve yapmayı düşünüyorum. Ben kesinlikle dbunit nefret ediyorum. Bunu yapmadan önce, eğer birileri bunu yaptığını bilmek istiyorum.

Ben dbunit: hakkında sevmediğim şeyler

1) yazma ve başlamak için En basit biçimi önerilmiyor. Sen şişirilmiş biçimleri kullanmak istiyorlar. Hatta bazıları xml şemaları gerektirir. Evet, her neyse.

2) bunları yazmak değil sırayla satırları doldurmak, ama sırayla tabloları xml dosyasında tanımlanır. Bu yabancı anahtar kısıtlamaları sorunlara neden olmayacak şekilde verilerinizi sipariş edebilirsiniz. çünkü gerçekten kötü. Bu sadece onları tamamen kapatarak sorunsuz geçmesi için zorlar.

Bu da zaman kaybına neden olur ve junit temel derslerin kodu yabancı anahtar kısıtlamaları devre dışı bırakmak için eklemek oluşup şişmeden. Muhtemelen veritabanı tipi (hsqldb, vb.) için test etmek gerekir ve onları etkisiz hale veritabanı özgü yollar. Bu kötü yolu.

Eğer dbunit kendi çerçevesi otomatik olarak bir parçası olarak yabancı anahtar kısıtlamaları devre dışı bırakma yardım etseydin daha iyi olabilirdi, ama böyle bir şey yapmazlar. Lehçeleri... neden bunun için onları kullanmak değil, bu yüzden takip ediyorlar mı? Sonuçta, bu mu tüm programcı zaman israf güç ve ayağa kalkıp hızlı bir şekilde test ediyor.

3) XML yazmak için bir ağrı. Bu konuda daha fazla söylememe gerek yok. Onlar sadece işleri zorlaştırır bence o da bunu yapmak için bir çok yol sunuyor. Sadece bir tane çok sağlam bir şekilde sunmak ve bu iş biter.

4) veri büyük aldığında, kimlikleri parça ve tutarlı/doğru ilişkiyi tutan bir kraliyet ağrı.

Ayrıca, eğer sen bir proje için bir ay, nasılsın hatırlamak user_id 1 yönetici, 2 user_id bir iş kullanıcı, user_id 3 mühendis ve user_id 4 oldu başka bir şey? Bu kontrol etmek için daha fazla vakit harcıyor. Bu keyfi bir sayı dışında almak için anlamlı bir yolu olmalı.

5) yavaş. Hsqldb kullanılmadığı sürece, acı yavaş olduğunu buldum. Olmak zorunda değil. Ayrıca bunu yapmak kolay değil yapılandırmayı karışıklık için birçok yolu vardır "kutunun dışında". İle çalışma hakkı elde etmek için gitmen gereken bir kambur var. Bütün insanlar kullanmak veya kullanmaya ne zaman başlıyor kızgın olmak için teşvik edilir.

6) Bazı değerler çok yineliyor, seviyor tarihleri. Varsayılan ayarları belirtmek, hatta çerçevesi otomatik olarak varsayılan koyduk, hatta orada varsayılanları koymak söylemeden iyi olurdu. Bu şekilde nesneleri sadece istediğiniz değerleri ile birlikte oluşturabilirsiniz, gerisini bırak. Bu tabii eğer gerekli değilse bir sütun köşe bucak belirten yener.

7) belki de en sinir bozucu şey ilk giriş TÜM değerleri içermelidir yani boş yer tutucuları bile - ya gelecek satırları aslında belirtilen sütun almak olmaz.

DBunit gerçek bir null değeri ya çevirme [NULL] için mantıklı bir varsayılan yok. Elle eklemek zorunda. Dbunit ile bu yapmadı kim söyle bana? Herkesin vardır. Böyle olmamalı!

Bunun anlamı, eğer polimorfik bir nesne varsa, boş olmalarına rağmen ilk satırdaki her sınıfın katılan tüm tablolar için yabancı anahtar bildirmeniz gerekir. Eğer tüm alt desen için bir tablo yaparsan, seni hala ilk satırdaki tüm alanları belirlemek için. Bu sadece korkunç.

Beni karşılamak için orada bir şey, ya da çok daha iyi bir veritabanı test çerçeve bir sonraki çerçeve geliştirici mi olmalıyım?

CEVAP
16 EKİM 2010, CUMARTESİ


DbUnit için gerçek bir alternatif farkında değilim ve araçları @Joe tarafından söz hiçbiri benim gözümde

  • Incanto: DB agnostik
  • SQLUnit: test veritabanı için regresyon ve birim test koşum saklı prosedürler (DbUnit değil)
  • Cactus:-kabı test (veritabanları ile yardımcı olur nerede olduğunu görmek için başarısız) için bir araç
  • Liquibase: veritabanı göç aracı (Veri Doğrulama/yük vermez)
  • ORMUnit: ama hepsi bu veritabanı başlatılamıyor
  • JMock: DbUnit ile rekabet Hiç Yok

Bu varlık, şahsen başarıyla birkaç kez DbUnit kullandım dedi, küçük ve büyük projeler üzerinde ve Unitils ve DbUnit modülü kullanarak özellikle oldukça kullanışlı buluyorum. Bu mükemmel ve geliştirilebilir anlamına gelmez ama iyi takım (Özel yapım veya Unitils gibi bir şey), bunu kullanarak iyi bir deneyim oldu.

Yani bana bazı noktaları cevap vereyim:

1) yazma ve başlamak için En basit biçimi önerilmiyor. Sen şişirilmiş biçimleri kullanmak istiyorlar. Hatta bazıları xml şemaları gerektirir. Evet, her neyse.

DbUnit düz veya yapılandırılmış XML, DOC, CSV destekler. Devrimci biçimini kullanın. Bu arada, DTD veya XML şema kullanırken zorunlu değildir. Doğrulama gibi güzel şeyler ve otomatik tamamlama veriyor ama, nasıl o kadar kötü mü? Ve Unitils kolayca sizin için, Generate an XSD or DTD of the database structure bakın oluşturabilir.

Eğer dbunit kendi çerçevesi otomatik olarak bir parçası olarak yabancı anahtar kısıtlamaları devre dışı bırakma yardım etseydin daha iyi olabilirdi, ama böyle bir şey yapmazlar. Lehçeleri... neden bunun için onları kullanmak değil, bu yüzden takip ediyorlar mı? Sonuçta, bu mu tüm programcı zaman israf güç ve ayağa kalkıp hızlı bir şekilde test ediyor.

Armanı bekliyorlar.

Bu arada, Unitils şeffaf kısıtlamaları işlemek için destek, Disabling constraints and updating sequences bakın sağlar.

3) XML yazmak için bir ağrı. Bu konuda daha fazla söylememe gerek yok. Onlar sadece işleri zorlaştırır bence o da bunu yapmak için bir çok yol sunuyor. Sadece bir tane çok sağlam bir şekilde sunmak ve bu iş biter.

Ağrı özneldir sanırım ama bir şema ve tamamlama kullanırken acı, özellikle bulmuyorum. Önerdiğin Gümüş kurşun nedir?

4) veri büyük aldığında, kimlikleri parça ve tutarlı/doğru ilişkiyi tutan bir kraliyet ağrı.

best practice biliyorum ki onları küçük tutun. Bilinen en iyi yöntem karşı gidiyoruz ve o zaman şikayet edersin

Ayrıca, eğer sen bir proje için bir ay, nasılsın hatırlamak user_id 1 yönetici, 2 user_id bir iş kullanıcı, user_id 3 mühendis ve user_id 4 oldu başka bir şey? Bu kontrol etmek için daha fazla vakit harcıyor. Bu keyfi bir sayı dışında almak için anlamlı bir yolu olmalı.

Evet, görev geçişi üretken. Ama beri yazdığını düşük seviye veri, öğrenmek zorundasın nasıl gösterilir, orada sihirli bir çözüm olmadığı sürece kullandığınız bir yüksek düzey API elbette (ama amacım bu değil bu DbUnit).

5) yavaş. Hsqldb kullanılmadığı sürece, acı yavaş olduğunu buldum. Olmak zorunda değil. Ayrıca bunu yapmak kolay değil yapılandırmayı karışıklık için birçok yolu vardır "kutunun dışında". İle çalışma hakkı elde etmek için gitmen gereken bir kambur var. Bütün insanlar kullanmak veya kullanmaya ne zaman başlıyor kızgın olmak için teşvik edilir.

Veritabanları OLANLARI, DbUnit değil doğasında var. Eğer bir şeyleri mümkün olduğunca hızlı (eğer bir şeyler yapmak daha iyi agnostik bir yolu varsa, bunu öğrenmek isterim) olmak istiyorsan H2 gibi hızlı bir veritabanı kullanın.

6) belki de en sinir bozucu şey ilk giriş TÜM değerleri içermelidir yani boş yer tutucuları bile - ya gelecek satırları aslında belirtilen sütun almak olmaz.

Unitils - Home - JavaPolis 2008 Unit testing: unitils & dbmaintain gibi sunumlarda da belirtildiği gibi Unitils kullanırken değil.

Beni karşılamak için orada bir şey, ya da çok daha iyi bir veritabanı test çerçeve bir sonraki çerçeve geliştirici mi olmalıyım?

Eğer daha iyi şeyler yapabilirsiniz düşünüyorsanız, belki de mevcut çözümler için katkıda bulunur. Eğer katil veritabanı ne diyebilirim çerçeve, test oluşturabilirsiniz düşünüyorsan eğer bu mümkün değilse ve yap. Ama, atıp tutması kolay unutma, çözümleri ile kendi çözümlerini kullanarak geliyor çok az.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • ShayLoss

    ShayLoss

    5 Kasım 2009