Testes Instrumentados

Os testes instrumentados são uma parte fundamental do processo de teste Android. Eles permitem que você teste seu aplicativo em um ambiente Android real (ou emulador) e interaja com os componentes da interface do usuário, como botões, textviews e bancos de dados, simulando o comportamento do usuário. Vamos explorar como escrever e executar testes instrumentados em seu aplicativo Android.

Configuração Básica

Antes de começar a escrever testes instrumentados, aqui estão algumas configurações básicas:

  1. Dependências: No arquivo build.gradle do seu módulo de aplicativo, adicione a dependência para a biblioteca de testes instrumentados:

    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    
  2. AndroidManifest.xml: No arquivo AndroidManifest.xml do seu módulo de teste (geralmente em src/androidTest/), você pode configurar algumas permissões especiais, como a permissão de internet para os testes que precisam acessar recursos da web.

Escrevendo Testes Instrumentados com Espresso

O Espresso é uma estrutura popular para testes instrumentados no Android. Ele permite que você escreva testes de interface do usuário concisos e legíveis.

Aqui está um exemplo de um teste Espresso básico:

import androidx.test.rule.ActivityTestRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.example.myapp.MainActivity;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
public class MainActivityInstrumentedTest {

    @Rule
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void testButtonClicked() {
        // Encontrar um EditText e inserir texto
        onView(withId(R.id.editText)).perform(typeText("Hello"));

        // Clicar em um botão
        onView(withId(R.id.button)).perform(click());

        // Verificar se o texto é exibido em um TextView após o clique no botão
        onView(withId(R.id.textView)).check(matches(withText("Hello")));
    }
}

Neste exemplo, o teste interage com um EditText (inserindo o texto “Hello”) e um Button (clicando nele). Em seguida, verifica se o texto “Hello” é exibido em um TextView.

Executando Testes Instrumentados

Você pode executar testes instrumentados de várias maneiras:

  • A partir do Android Studio: Clique com o botão direito no arquivo de teste e selecione “Run”.

  • No Terminal: Use o comando ./gradlew connectedAndroidTest para executar todos os testes instrumentados.

Os testes instrumentados ajudam a garantir que seu aplicativo se comporte corretamente em um ambiente de dispositivo real ou emulado, proporcionando confiança na qualidade e na experiência do usuário do seu aplicativo Android. É uma prática essencial para qualquer equipe de desenvolvimento Android séria.