Testowanie i debugowanie bazy danych

Istotne jest zweryfikowanie stabilności bazy danych aplikacji oraz podczas tworzenia baz danych za pomocą Biblioteka trwałości sal. Ta strona o tym, jak przetestować bazę danych i wykonać czynności debugowania, aby ułatwić zalicza testy.

Testowanie bazy danych

Są 2 sposoby testowania bazy danych:

  • na urządzeniu z Androidem,
  • Na komputerze służącym do programowania hosta (niezalecane).

Informacje o testowaniu specyficznym dla migracji bazy danych znajdziesz w artykule Testowanie migracji.

Testowanie na urządzeniu z Androidem

Zalecanym sposobem testowania implementacji bazy danych jest napisanie Test JUnit działający na urządzeniu z Androidem. Ponieważ te testy nie wymagają podczas tworzenia działania, powinny one być wykonywane szybciej niż testy interfejsu.

Podczas konfigurowania testów należy utworzyć wersję pamięci w bazie danych, aby testy były bardziej hermetyczne, jak w tym przykładzie:

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));
    }
}

Testowanie na hoście

Sala korzysta z biblioteki pomocy SQLite, która zawiera pasujące do nich interfejsy w klasach Androida Framework. Opcja ta umożliwia przekazywanie na potrzeby testowania zapytań do bazy danych.

Testowanie migracji

Sala obsługuje przyrostową bazę danych migracji do zachowania istniejących danych aplikacji w sytuacjach, gdy aktualizacja aplikacji zmienia schemat bazy danych. Jednak nieprawidłowo zdefiniowana migracja może spowodować awarię aplikacji. Marka upewnij się, że baza danych sal została przetestowana,

Debugowanie bazy danych

Istnieje kilka narzędzi i procesów, których możesz używać do debugowania bazy danych.

Użyj inspektora baz danych

Inspektor baz danych w Android Studio 4.1 i nowszych umożliwia sprawdzanie i modyfikować jej bazy danych, gdy aplikacja jest uruchomiona. Baza danych Inspektor jest zgodny z wersją SQLite dołączaną do Androida i obejmuje specjalne funkcje do wykorzystania w Pokoju:

  • Korzystanie z działań rynkowych do szybkiego uruchamiania zapytań z poziomu DAO zajęcia.
  • Natychmiast wyświetlaj aktualizacje na żywo w inspektorze baz danych po uruchomieniu aplikacji wprowadza zmiany w danych.

Aby dowiedzieć się więcej o Inspektorze baz danych, przeczytaj artykuł Debuguj bazę danych za pomocą z inspektorem baz danych.

Zrzut danych z wiersza poleceń

Pakiet Android SDK zawiera narzędzie bazy danych sqlite3 służące do sprawdzania baz danych. Zawiera polecenia takie jak .dump do drukowania zawartości pliku i .schema, aby wydrukować instrukcję SQL CREATE dla istniejącej tabeli.

Możesz także wykonać polecenia SQLite z poziomu wiersza poleceń, jak pokazano na ten fragment:

adb -s emulator-5554 shell
sqlite3 /data/data/your-app-package/databases/rssitems.db

Więcej informacji znajdziesz w wierszu poleceń sqlite3 dokumentacji, która jest dostępna na SQLite.

Dodatkowe materiały

Więcej informacji o testowaniu i debugowaniu bazy danych sal znajdziesz w tych dodatkowe materiały:

Posty na blogu

Filmy