É importante verificar a estabilidade do banco de dados do seu app e os dados do usuário ao criar bancos de dados usando a biblioteca de persistência Room. Esta página discute 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 formas de testar seu banco de dados:
- Em um dispositivo Android;
- Na sua máquina de desenvolvimento host (não recomendado).
Para ver informações sobre testes específicos para migrações do banco de dados, consulte Testar migrações.
Testar em um dispositivo Android
A abordagem recomendada para testar a implementação do banco de dados é gravar um teste JUnit executado em um dispositivo Android. Como esses testes não exigem a criação de uma atividade, sua execução será mais rápida que os testes de IU.
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.
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)); } }
Testar na máquina host
O Room usa a Biblioteca de Suporte SQLite, que fornece interfaces que correspondem às interfaces das classes do Android Framework. Essa compatibilidade permite que você transmita implementações personalizadas da Biblioteca de Suporte para testar suas consultas a bancos de dados.
Depurar o banco de dados
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 a seguir:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Para ver mais informações, consulte a documentação da linha de comando sqlite3
, disponível no site do SQLite.