Testa ed esegui il debug del tuo database

È importante verificare la stabilità del database della tua app e degli utenti quando crei database utilizzando Libreria di persistenza della stanza. Questa pagina illustra come testare il database ed eseguire passaggi di debug per test superati.

Testa il database

Esistono due modi per testare il database:

  • Su un dispositivo Android.
  • Sul computer di sviluppo host (sconsigliato).

Per informazioni sui test specifici per le migrazioni dei database, vedi Test delle migrazioni.

Test su un dispositivo Android

L'approccio consigliato per testare l'implementazione del database è scrivere un Test JUnit eseguito su un dispositivo Android. Poiché questi test non richiedono creando un'attività, dovrebbero essere più veloci da eseguire rispetto ai test dell'interfaccia utente.

Quando configuri i test, devi creare una versione in memoria del per rendere i test più ermetici, come mostrato nell'esempio seguente:

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

Esegui test sul computer host

Room utilizza la libreria di supporto SQLite, che fornisce interfacce corrispondenti nelle classi di Android Framework. Questo supporto ti consente di trasmettere implementazioni della libreria di supporto per testare le query del database.

Testare le migrazioni

La stanza supporta un database incrementale migrazioni per mantenere dati esistenti dell'app in situazioni in cui un aggiornamento dell'app modifica lo schema del database. Tuttavia, una migrazione definita in modo errato potrebbe causare l'arresto anomalo dell'app. Marca assicurati di testare il database delle stanze Migrazioni.

Esegui il debug del database

Esistono diversi strumenti e processi che puoi utilizzare per eseguire il debug del database.

Utilizzare Database Inspector

In Android Studio 4.1 e versioni successive, Database Inspector consente di controllare, eseguire query e modificare i database dell'app mentre è in esecuzione. Il database Inspector è compatibile con la versione di SQLite inclusa in Android e include funzionalità speciali per l'utilizzo con Room:

  • Utilizza le azioni grondaia per eseguire rapidamente query dal tuo DAO .
  • Visualizza immediatamente gli aggiornamenti in tempo reale in Database Inspector quando l'app è in esecuzione apporta modifiche ai dati.

Per saperne di più su Database Inspector, consulta Eseguire il debug del database con Controllo database.

Esegui il dump dei dati dalla riga di comando

L'SDK Android include uno strumento di database sqlite3 per esaminare lo o Microsoft SQL Server. Include comandi come .dump per stampare i contenuti di un e .schema per stampare l'istruzione SQL CREATE per una tabella esistente.

Puoi anche eseguire comandi SQLite dalla riga di comando, come mostrato in seguente snippet:

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

Per ulteriori informazioni, consulta la riga di comando sqlite3 documentazione, disponibile sul Sito web SQLite.

Risorse aggiuntive

Per scoprire di più su come testare e eseguire il debug del database delle stanze, consulta le seguenti risorse risorse aggiuntive:

Blog post

Video