Oda kalıcılığı kitaplığını kullanarak veritabanı oluştururken uygulamanızın veritabanının ve kullanıcılarınızın verilerinin kararlılığını doğrulamak önemlidir. Bu sayfada veritabanınızı nasıl test edeceğiniz ve testlerinizin başarılı olmasına yardımcı olmak için hata ayıklama adımlarını nasıl uygulayacağınız açıklanmaktadır.
Veritabanınızı test etme
Veritabanınızı test etmenin 2 yolu vardır:
- Android cihazda.
- Ana makine geliştirme makinenizde (önerilmez).
Veritabanı taşıma işlemlerine özel testler hakkında bilgi edinmek için Taşıma İşlemlerini Test Etme bölümüne bakın.
Android cihazda test etme
Veritabanı uygulamanızı test etmek için önerilen yaklaşım, bir Android cihazda çalışan bir JUnit testi yazmaktır. Bu testler etkinlik oluşturmayı gerektirmediğinden yürütülmeleri kullanıcı arayüzü testlerinize göre daha hızlı olmalıdır.
Testlerinizi oluştururken, aşağıdaki örnekte gösterildiği gibi, testlerinizin daha hermetik olmasını sağlamak için veritabanınızın bellek içi sürümünü oluşturmanız gerekir:
Kotlin
@RunWith(AndroidJUnit4::class) class SimpleEntityReadWriteTest { private lateinit var userDao: UserDao private lateinit var db: TestDatabase @Before fun createDb() { val context = ApplicationProvider.getApplicationContext<Context>() db = Room.inMemoryDatabaseBuilder( context, TestDatabase::class.java).build() userDao = db.getUserDao() } @After @Throws(IOException::class) fun closeDb() { db.close() } @Test @Throws(Exception::class) fun writeUserAndReadInList() { val user: User = TestUtil.createUser(3).apply { setName("george") } userDao.insert(user) val byName = userDao.findUsersByName("george") assertThat(byName.get(0), equalTo(user)) } }
Java
@RunWith(AndroidJUnit4.class) public class SimpleEntityReadWriteTest { private UserDao userDao; private TestDatabase db; @Before public void createDb() { Context context = ApplicationProvider.getApplicationContext(); db = Room.inMemoryDatabaseBuilder(context, TestDatabase.class).build(); userDao = db.getUserDao(); } @After public void closeDb() throws IOException { db.close(); } @Test public void writeUserAndReadInList() throws Exception { User user = TestUtil.createUser(3); user.setName("george"); userDao.insert(user); List<User> byName = userDao.findUsersByName("george"); assertThat(byName.get(0), equalTo(user)); } }
Ana makine makinenizde test etme
Oda, Android Framework sınıflarındaki arayüzlerle eşleşen arayüzler sağlayan SQLite Destek Kitaplığı'nı kullanır. Bu destek, veritabanı sorgularınızı test etmek için destek kitaplığının özel uygulamalarını iletmenize olanak tanır.
Taşıma işlemlerinizi test etme
Room, bir uygulama güncellemesinin veritabanı şemasını değiştirdiği durumlarda mevcut uygulama verilerini korumak için artımlı veritabanı taşıma işlemlerini destekler. Ancak yanlış tanımlanmış bir taşıma işlemi, uygulamanızın kilitlenmesine neden olabilir. Oda veritabanı taşıma işlemlerinizi test ettiğinizden emin olun.
Veritabanınızda hata ayıklama
Veritabanınızdaki hataları ayıklamak için kullanabileceğiniz birkaç araç ve işlem vardır.
Veritabanı Denetleyicisi'ni kullanma
Android Studio 4.1 ve sonraki sürümlerde Veritabanı Denetleyicisi, uygulamanız çalışırken uygulamanızın veritabanlarını incelemenize, sorgulamanıza ve değiştirmenize olanak tanır. Veritabanı Denetleyicisi, Android ile birlikte sunulan SQLite sürümüyle uyumludur ve Room ile kullanım için özel özellikler içerir:
- DAO sınıflarınızdan sorguları hızlı bir şekilde çalıştırmak için alt bölme işlemlerini kullanın.
- Çalışan uygulamanız verilerde değişiklik yaptığında, canlı güncellemeleri Database Inspector'da anında görün.
Veritabanı Denetleyicisi hakkında daha fazla bilgi edinmek için Veritabanı Denetleyicisi ile veritabanınızdaki hataları ayıklama bölümüne bakın.
Komut satırından verilerin dökümünü al
Android SDK, uygulamanızın veritabanını incelemeniz için bir sqlite3
veritabanı aracı içerir. Bu işlev, bir tablonun içeriğini yazdırmak için .dump
ve mevcut bir tablonun SQL CREATE
ifadesini yazdırmak için .schema
gibi komutlar içerir.
Aşağıdaki snippet'te gösterildiği gibi, SQLite komutlarını komut satırından da çalıştırabilirsiniz:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Daha fazla bilgi için SQLite web sitesinde bulunan sqlite3
komut satırı belgelerini inceleyin.
Ek kaynaklar
Room veritabanınızı test etme ve hata ayıklama hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynakları inceleyin:
Blog yayınları
Videolar
- Database Inspector (Android'de 11 Hafta)