O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Testar e depurar seu banco de dados

É 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.