Podczas tworzenia baz danych przy użyciu biblioteki trwałości sal warto sprawdzić stabilność bazy danych aplikacji i danych użytkowników. Na tej stronie dowiesz się, jak przetestować bazę danych i wykonać czynności debugowania, które pomogą Ci zaliczyć testy.
Testowanie bazy danych
Istnieją 2 sposoby testowania bazy danych:
- Na urządzeniu z Androidem.
- Na komputerze używanym do programowania (niezalecane).
Informacje o testowaniu migracji bazy danych znajdziesz w artykule o testowaniu migracji.
Testowanie na urządzeniu z Androidem
Zalecanym sposobem testowania implementacji bazy danych jest napisanie testu JUnit uruchamianego na urządzeniu z Androidem. Ponieważ testy te nie wymagają tworzenia aktywności, powinny być wykonywane szybciej niż testy interfejsu.
Podczas konfigurowania testów należy utworzyć wersję bazy danych w pamięci, aby testy były bardziej hermetyczne, jak pokazano 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 udostępnia interfejsy pasujące do tych w klasach Android Framework. Ta obsługa umożliwia przekazywanie niestandardowych implementacji biblioteki pomocy do testowania zapytań do bazy danych.
Testowanie migracji
Sala obsługuje przyrostowe migracje bazy danych, co pozwala zachować istniejące dane w sytuacjach, gdy aktualizacja aplikacji zmieni schemat bazy danych. Nieprawidłowo zdefiniowana migracja może jednak spowodować awarię aplikacji. Pamiętaj o przetestowaniu migracji bazy danych Room.
Debugowanie bazy danych
Istnieje kilka narzędzi i procesów, których możesz użyć do debugowania bazy danych.
Użyj Inspektora baz danych
W Android Studio w wersji 4.1 i nowszych Inspektor baz danych umożliwia sprawdzanie, wysyłanie zapytań i modyfikowanie baz danych aplikacji w trakcie jej działania. Inspektor baz danych jest zgodny z wersją SQLite, która jest dostarczana z Androidem, i zawiera specjalne funkcje do użycia z pomieszczeniami:
- Używaj działań rynkowych, aby szybko uruchamiać zapytania z klas DAO.
- Gdy uruchomiona aplikacja wprowadzi zmiany w danych, natychmiast będziesz widzieć aktualizacje na żywo w Inspektorze baz danych.
Więcej informacji o Inspektorze baz danych znajdziesz w artykule Debugowanie bazy danych przy użyciu inspektora baz danych.
Zrzut danych z wiersza poleceń
Pakiet SDK na Androida zawiera narzędzie do sprawdzania baz danych aplikacji sqlite3
. Zawiera on polecenia, takie jak .dump
wyświetlające zawartość tabeli i .schema
, która wyświetla instrukcję SQL CREATE
dla istniejącej tabeli.
Polecenia SQLite możesz też wykonywać z poziomu wiersza poleceń, jak widać w tym fragmencie:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Więcej informacji znajdziesz w dokumentacji wiersza poleceń sqlite3
dostępnej na stronie SQLite.
Dodatkowe materiały
Więcej informacji o testowaniu i debugowaniu bazy danych Room znajdziesz w tych dodatkowych materiałach:
Posty na blogu
Filmy
- Inspektor baz danych (11 tygodni korzystania z Androida)