2016-03-20 61 views
6

Birim testi için db ve Robolectric için Sugar ORM kullanıyorum. Robolectric ile Sugar ORM kullanmak için this sorusunu takip edin.Sugar ORM, birim testi yapılırken her defasında kaydedilecek kayıtlara ihtiyaç duyuyor mu?

Aşağıdaki kodumu başlangıcına yerleştirme startEverTestSugarAppAsFirst yöntemini çalıştırın ve çalıştırın.

İlk kaydın adını yazdırır. Çok uzak çok iyi.

Ancak, //new PersonHandler(new Activity()).insertPeople(); yorumunu yapıp tekrar çalıştırırsam hiçbir kayıt döndürülmez ve boş gösterici istisnası verilir. Sugar ORM'in kayıtları ilk seferde bir yere kaydettiğini ve bu kayıtlara ikinci defa erişebileceğimi düşündüm. Öte yandan

, ben benim ana etkinliğin onCreate yönteminde ve ben günlüğüne basılan ilk kaydını görebilirsiniz ilk satırı dışında yorum ile ikinci vadede aşağıdaki kodu koymak emülatör çalıştırırsanız.

new PersonHandler(this).insertPeople(); 
Person p = Person.findById(Person.class, 1); 
Log.v("person", p.getName()); 

Yani, Şeker ORM, birim test bittikten sonra db'yi siliyor mu? veya db'yi kaydettiğinde, tekrar tekrar kullanabilirim?

cevap

1

SugarORM ancak Robolectric. Her testi geçici bir veritabanı oluşturur, böylece aralarında gizli bir bağımlılık yoktur.

Bu iyi bir şey, sizin birim testleri başarıyla onlar

+0

ben db = SQLiteDatabase.openOrCreateDatabase (filePath, null) ile sqlite db kullanabilirsiniz çalıştırmak sıraya bağlı değildir çalıştırılmalıdır olduğu; robolectic birim testinde komut. Şeker ormunu belirtilen bir db yolu ile birleştirmenin bir yolu var mı? – orkan

+0

http://stackoverflow.com/questions/24225541/android-sugar-orm-with-existing-db-custom-file-path –

+0

Bu gönderiyi biliyorum. Ancak cevaplar, emülatörün erişebileceği yerel db/data/data/... klasörünün kopyalanmasıyla ilgilidir. Birim testi için yerel db kullanmam gerekiyor. Çünkü zaten/data/data/... konumunda db var. Ancak birim testindeki şeker orm kodu bu yere bakmaz ve kullanmaz. – orkan