Datenbank testen und Fehler beheben

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