Ao criar bancos de dados usando a biblioteca de persistência do Room, você deve verificar a estabilidade do banco de dados do app e os dados do usuário. Esta página descreve como testar seu banco de dados e cumprir etapas de depuração para ajudar a passar nos testes.
Testar seu banco de dados
Há duas maneiras de testar seu banco de dados:
- Em um dispositivo com o Android
- Na sua máquina de desenvolvimento host
Para ver informações sobre testes específicos para migrações do banco de dados, consulte Como testar migrações.
Testar em um dispositivo com o Android
Para testar a implementação do banco de dados, recomendamos gravar um teste JUnit executado em um dispositivo com o Android. Como esses testes não exigem uma atividade, eles são executados mais rapidamente do que os testes de interface.
Ao configurar os testes, crie uma versão do seu banco de dados na memória para tornar os testes mais herméticos, conforme mostrado no exemplo a seguir.
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) } }
Testar na máquina host (JVM)
Com o Room KMP, é possível executar testes de banco de dados na máquina de desenvolvimento host usando testes JUnit de JVM local. Essa configuração permite que os testes sejam executados mais rapidamente, eliminando a sobrecarga de um emulador ou dispositivo Android.
Para ajudar a manter a consistência, use o BundledSQLiteDriver. Esse driver inclui o SQLite compilado da origem, que usa exatamente a mesma versão do SQLite na máquina host, em dispositivos Android e iOS. O uso desse driver elimina problemas de incompatibilidade de versão.
Para configurar testes de JVM, configure o BundledSQLiteDriver no builder do banco de dados de teste:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
Testar migrações
O Room oferece suporte a migrações incrementais de banco de dados para manter os dados do app existentes em situações em que uma atualização do app muda o esquema do banco de dados. No entanto, uma migração definida incorretamente pode causar falhas no app. É importante testar as migrações do banco de dados do Room.
Depurar o banco de dados
Existem várias ferramentas e processos que podem ser usados para depurar um banco de dados.
Usar o Database Inspector
No Android Studio 4.1 e versões mais recentes, o Database Inspector permite inspecionar, consultar e modificar os bancos de dados do seu app enquanto ele está em execução. O Database Inspector é compatível com a versão do SQLite disponibilizada com o Android e inclui recursos especiais para usar com o Room:
- Use ações de gutter para executar consultas nas classes DAO.
- Quando o app em execução faz mudanças nos dados, é possível ver atualizações em tempo real no Database Inspector.
Para mais informações sobre o Database Inspector, consulte Depurar o banco de dados com o Database Inspector.
Despejar dados da linha de comando
O SDK do Android inclui uma ferramenta de banco de dados sqlite3 para examinar os bancos de dados do
app. Ele inclui comandos como .dump para imprimir o conteúdo de uma tabela e .schema para imprimir a instrução SQL CREATE de uma tabela existente.
Você também pode executar comandos SQLite na linha de comando, conforme mostrado no snippet abaixo:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Para mais informações, consulte a
sqlite3 documentação da linha de comando, disponível no
site do SQLite.
Outros recursos
Para saber mais sobre como testar e depurar o banco de dados do Room, consulte estes recursos:
Postagens do blog
Vídeos
- Database Inspector (11 semanas do Android)