Bu eski bir soru ama ben bu ile yaşadığınız bazı özel deneyim eklemek istiyorum düşündüm.
Diğer posterler bu entegrasyon test şeklidir ama nereden ben birim test söndürdü için MySQL çok fazla mantık orada sık sık oturup teknik olarak doğru. Eğer bizim gibi ve MySQL üzerinde büyük ölçüde bağımlı olan (ve genellikle hizmet başına birkaç tablo) büyük, karmaşık hizmetler varsa, test sorgu mantığını içeren sağlam bir test çerçeve olması gerçekten kullanışlı. Biz ünite testleri bizim bağımlılıkları iyi bir dizi taklit değil, MySQL.
Biz bu işlevselliği sağlamak için SimpleTest şal sınıfları bir dizi var. Bu gibi bir şey çalışır:
- Her veritabanı tablo oluşturmak için talimatları
tests/etc/schemas/table.sql
bir dosyada saklanır. Bu testi bulmak için beklediğiniz tüm konserve veriler için şema verilerin yanı sıra ekler içeriyor.
- Veritabanı gerektirir her test tabloları oluşturmak için işlevsellik sağlayan bir
Test_DbCase
sınıfını genişletir.
- Bir önyükleme sınıf oluşturma ve yapı ve imha üzerinde veritabanını bırakarak ilgilenir.
- Çalışma zamanında, ayar yöntemini test aramaları
loadTables('foo', 'bar')
foo.sql
olarak sql komutları yürütmek ve bar.sql
.
- Testler konserve verilere karşı çalışır .. dinlenme açıktır.
Elimizdeki Bir diğer aracı daha kolay table.sql
dosyaları oluşturmak için yapar bir bash script. Bu gerçekten kullanışlı, aksi takdirde biz elle SQL yazma olurdum çünkü - MySQL tüm verilerinizi kurmak, tablolar mevcut bir set çekmek, ve sonra temel test dosyaları oluşturmak için verebilirsiniz.
Biz bunun bir sürü kendimizi rulo zorunda sona erdi ama bu, bizim için gerçekten iyi çalışıyor.