Es ist wichtig, die Stabilität der Datenbank Ihrer App und der Ihrer Nutzer wenn Sie Datenbanken mithilfe der Raumpersistenzbibliothek. Diese Seite wie Sie Ihre Datenbank testen und Schritte zur Fehlerbehebung durchführen, bestanden.
Datenbank testen
Es gibt zwei Möglichkeiten, Ihre Datenbank zu testen:
- Auf einem Android-Gerät
- Auf dem Hostentwicklungscomputer (nicht empfohlen)
Informationen zu Tests, die speziell für Datenbankmigrationen gelten, finden Sie unter Migrationen testen.
Auf einem Android-Gerät testen
Es wird empfohlen, zum Testen Ihrer Datenbankimplementierung: JUnit-Test, der auf einem Android-Gerät ausgeführt wird. Da für diese Tests keine wenn Sie eine Aktivität erstellen, sollten diese schneller ausgeführt werden als Ihre UI-Tests.
Beim Einrichten von Tests sollten Sie eine In-Memory-Version Ihrer um Ihre Tests hermetisch zu gestalten, wie im folgenden Beispiel gezeigt:
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)); } }
Auf Hostcomputer testen
Room verwendet die SQLite-Supportbibliothek, die Schnittstellen bietet, in den Android Framework-Klassen. Mit dieser Unterstützung können Sie Implementierungen der Supportbibliothek zum Testen Ihrer Datenbankabfragen.
Migrationen testen
Raum unterstützt inkrementelle Datenbank Migrationen für die Beibehaltung der in Situationen, in denen das Datenbankschema durch ein App-Update geändert wird. Eine falsch definierte Migration kann jedoch zum Absturz Ihrer App führen. Marke sollten Sie Ihre Datenbank testen, Migrationen.
Datenbankfehler beheben
Es gibt mehrere Tools und Prozesse, mit denen Sie Fehler in Ihrer Datenbank beheben können.
Database Inspector verwenden
In Android Studio 4.1 und höher können Sie mit dem Database Inspector Abfragen ausführen und die Datenbanken der Anwendung ändern, während die Anwendung ausgeführt wird. Die Datenbank Der Inspector ist mit der Version von SQLite kompatibel, die in Android enthalten ist. enthält spezielle Funktionen für die Verwendung mit dem Raum:
- Verwenden Sie Bundstegaktionen, um Abfragen schnell über Ihren DAO auszuführen Klassen.
- Live-Updates werden sofort im Database Inspector angezeigt, wenn Ihre ausgeführte App Änderungen an den Daten vornimmt.
Weitere Informationen zum Database Inspector erhalten Sie unter Fehler in der Datenbank beheben mit dem Database Inspector
Dump von Daten über die Befehlszeile
Das Android SDK enthält ein sqlite3
-Datenbanktool, mit dem du die Leistung deiner App
Datenbanken. Sie enthält Befehle wie .dump
, um den Inhalt eines
und .schema
, um die SQL CREATE
-Anweisung für eine vorhandene Tabelle auszugeben.
Sie können SQLite-Befehle auch über die Befehlszeile ausführen, wie in den folgendes Snippet:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Weitere Informationen finden Sie in der sqlite3
-Befehlszeile
Dokumentation, verfügbar auf der
SQLite-Website.
Weitere Informationen
Weitere Informationen zum Testen und Debuggen Ihrer Room-Datenbank finden Sie unter Weitere Informationen:
Blogposts
Videos
- Database Inspector (11 Wochen im Voraus Android)