Lorsque vous créez des bases de données à l'aide de la bibliothèque de persistance Room, vous devez vérifier la stabilité de la base de données de votre application et des données de vos utilisateurs. Cette page explique comment tester votre base de données et comment effectuer les étapes de débogage qui vous aideront à réussir vos tests.
Tester votre base de données
Vous pouvez tester votre base de données de deux manières :
- Sur un appareil équipé d'Android
- Sur votre ordinateur de développement hôte
Pour en savoir plus sur les tests spécifiques aux migrations de bases de données, consultez la section Tester les migrations.
. De cette façon, si vous ne testez pas la base de données elle-même, vous n'avez pas besoin de créer une base de données complète, car vos DAO ne divulguent aucun détail de votre base de données.Tester votre base de données sur un appareil équipé d'Android
Pour tester l'implémentation de votre base de données, nous vous recommandons d'écrire un test JUnit exécuté sur un appareil équipé d'Android. Comme ces tests ne nécessitent pas d'activité, ils s'exécutent plus rapidement que les tests d'UI.
Lorsque vous configurez vos tests, vous devez créer une version en mémoire de votre base de données afin de les rendre plus hermétiques, comme illustré dans l'exemple suivant :
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) } }
Tester votre base de données sur la machine hôte (JVM)
Avec Room KMP, vous pouvez exécuter des tests de base de données sur votre ordinateur de développement hôte à l'aide de tests JUnit JVM locaux. Cette configuration permet à vos tests de s'exécuter plus rapidement en éliminant la surcharge d'un émulateur ou d'un appareil Android.
Pour assurer la cohérence, utilisez BundledSQLiteDriver. Ce pilote inclut SQLite compilé à partir de la source, qui utilise exactement la même version de SQLite sur votre machine hôte, vos appareils Android et vos appareils iOS. L'utilisation de ce pilote élimine les problèmes d'incompatibilité de version.
Pour configurer les tests JVM, configurez BundledSQLiteDriver dans le compilateur de votre base de données de test :
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
Tester vos migrations
Room permet les migrations incrémentielles de base de données afin de préserver les données de l'application existantes dans les cas où une mise à jour d'application modifierait le schéma de la base de données. Toutefois, une migration mal définie peut entraîner le plantage de votre application. Assurez-vous de tester les migrations de votre base de données Room.
Déboguer votre base de données
Plusieurs outils et processus vous permettent de déboguer votre base de données.
Utiliser l'outil d'inspection de bases de données
Dans Android Studio 4.1 et versions ultérieures, l'outil d'inspection de bases de données vous permet d'inspecter, d'interroger et de modifier les bases de données de votre application pendant son exécution. L'outil d'inspection de bases de données est compatible avec la version de SQLite fournie avec Android et inclut des fonctionnalités spéciales à utiliser avec Room :
- Utilisez des actions de marge pour exécuter des requêtes à partir de vos classes DAO.
- Lorsque votre application en cours d'exécution apporte des modifications aux données, vous pouvez immédiatement consulter les informations en direct dans l'outil d'inspection de bases de données.
Pour en savoir plus sur l'outil d'inspection de bases de données, consultez la page Déboguer votre base de données à l'aide de l'outil d'inspection de bases de données.
Vider les données depuis la ligne de commande
Le SDK Android inclut un outil de base de données sqlite3 permettant d'examiner les bases de données de votre application. Il inclut des commandes telles que .dump pour afficher le contenu d'une table, et .schema pour imprimer l'instruction SQL CREATE d'une table existante.
Vous pouvez également exécuter des commandes SQLite à partir de la ligne de commande, comme indiqué dans l'extrait de code suivant :
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Pour en savoir plus, consultez la
sqlite3 documentation sur la ligne de commande, disponible sur le site Web SQLite.
Ressources supplémentaires
Pour en savoir plus sur les tests et le débogage de votre base de données Room, consultez les ressources supplémentaires suivantes :
Articles de blog
Vidéos
- Outil d'inspection de bases de données (11 semaines d'Android)