Quando crei database utilizzando la libreria di persistenza Room, devi verificare la stabilità del database della tua app e dei dati dei tuoi utenti. Questa pagina descrive come testare il database ed eseguire passaggi di debug per aiutarti a superare i test.
Testare il database
Esistono due modi per testare il database:
- Su un dispositivo che esegue Android
- Sul computer di sviluppo host
Per informazioni sui test specifici per le migrazioni di database, vedi Testare le migrazioni.
Testare su un dispositivo che esegue Android
Per testare l'implementazione del database, ti consigliamo di scrivere un test JUnit che venga eseguito su un dispositivo che esegue Android. Poiché questi test non richiedono un'attività, vengono eseguiti più velocemente dei test dell'interfaccia utente.
Quando configuri i test, devi creare una versione in memoria del database per renderli più ermetici, come mostrato nell'esempio seguente:
import kotlinx.coroutines.test.runTest @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<TestDatabase>(context) .setDriver(BundledSQLiteDriver()) .build() userDao = db.userDao() } @After fun closeDb() { db.close() } @Test fun writeUserAndReadInList() = runTest { val user = User(3, "george") userDao.insert(user) val byName = userDao.findUsersByName("george") assertEquals(byName.single(), user) } }
Testare sulla macchina host (JVM)
Con Room KMP, puoi eseguire test del database sul computer di sviluppo host utilizzando i test JUnit JVM locali. Questa configurazione consente di eseguire i test più velocemente eliminando l'overhead di un emulatore o di un dispositivo Android.
Per mantenere la coerenza, utilizza BundledSQLiteDriver. Questo driver include SQLite compilato dall'origine, che utilizza la stessa versione di SQLite sulla macchina host, sui dispositivi Android e sui dispositivi iOS. L'utilizzo di questo driver elimina i problemi di mancata corrispondenza della versione.
Per configurare i test JVM, configura BundledSQLiteDriver nel builder del database di test:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
Testare le migrazioni
Room supporta le migrazioni incrementali del database per conservare i dati delle app esistenti nelle 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. Assicurati di testare le migrazioni del database Room.
Eseguire 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 ti consente di esaminare, eseguire query e modificare i database della tua app mentre l'app è in esecuzione. Database Inspector è compatibile con la versione di SQLite inclusa in Android e include funzionalità speciali per l'utilizzo con Room:
- Utilizza le azioni della barra laterale per eseguire query dalle tue classi DAO.
- Quando l'app in esecuzione apporta modifiche ai dati, puoi visualizzare immediatamente gli aggiornamenti live in Database Inspector.
Per ulteriori informazioni su Database Inspector, vedi Eseguire il debug del database con Database Inspector.
Eseguire il dump dei dati dalla riga di comando
L'SDK Android include uno strumento di database sqlite3 per esaminare i database della tua app. Include comandi come .dump per stampare i contenuti di una tabella e .schema per stampare l'istruzione SQL CREATE per una tabella esistente.
Puoi anche eseguire comandi SQLite dalla riga di comando, come mostrato nel seguente snippet:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Per ulteriori informazioni, consulta la
sqlite3 documentazione della riga di comando, disponibile sul
sito web di SQLite.
Risorse aggiuntive
Per saperne di più su come testare ed eseguire il debug del database Room, consulta le seguenti risorse aggiuntive:
Post del blog
Video
- Database Inspector (11 settimane di Android)