Veritabanınızı test etme ve hata ayıklama

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