Configurar projetos para o AndroidX Test

O AndroidX Test é uma coleção de bibliotecas do Jetpack que permite executar testes em apps Android. Ela também conta com uma série de ferramentas para ajudar na criação desses testes.

Por exemplo, o AndroidX Test fornece regras JUnit4 para iniciar atividades e interagir com elas em testes do JUnit4. Ele também contém frameworks de testes de interface, como Espresso, UI Automator e o simulador Robolectric.

Adicionar bibliotecas do AndroidX Test

Para usar o AndroidX Test, é necessário modificar as dependências do projeto do app no ambiente de desenvolvimento.

Adicionar dependências do Gradle

Para modificar as dependências do projeto do app, siga estas etapas:

  • Etapa 1: abra o arquivo build.gradle do módulo do Gradle.
  • Etapa 2: na seção de repositórios, verifique se o repositório Maven do Google aparece:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • Etapa 3: para cada pacote do AndroidX Test que você quer usar, adicione o nome dele à seção de dependências. Por exemplo, para adicionar o pacote espresso-core, adicione as seguintes linhas:

Groovy

dependencies {
        ...
        androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    }

Kotlin

dependencies {
        ...
        androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion')
    }

Estas são as dependências mais comuns disponíveis do AndroidX Test:

Groovy

dependencies {
    // Core library
    androidTestImplementation "androidx.test:core:$androidXTestVersion0"

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation "androidx.test:runner:$testRunnerVersion"
    androidTestImplementation "androidx.test:rules:$testRulesVersion"

    // Assertions
    androidTestImplementation "androidx.test.ext:junit:$testJunitVersion"
    androidTestImplementation "androidx.test.ext:truth:$truthVersion"

    // Espresso dependencies
    androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion"
    androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion"

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK’"s compile classpath or the test APK
    // classpath.
    androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
}

Kotlin

dependencies {
    // Core library
    androidTestImplementation("androidx.test:core:$androidXTestVersion")

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation("androidx.test:runner:$testRunnerVersion")
    androidTestImplementation("androidx.test:rules:$testRulesVersion")

    // Assertions
    androidTestImplementation("androidx.test.ext:junit:$testJunitVersion")
    androidTestImplementation("androidx.test.ext:truth:$truthVersion")

    // Espresso dependencies
    androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion")

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK"s compile classpath or the test APK
    // classpath.
    androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion")
}

A página Notas de lançamento contém uma tabela com as versões mais recentes por artefato.

Consulte o Índice de pacotes ou o Índice de classe para a documentação de referência específica sobre essas bibliotecas.

Projetos que usam classes descontinuadas

Se o app usa testes que dependem de classes android.test descontinuadas baseadas em JUnit3 , como InstrumentationTestCase e TestSuiteLoader, adicione as seguintes linhas à seção android do arquivo:

android {
    ...
    useLibrary 'android.test.runner'

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
  }

Adicionar declarações de manifesto

Para executar testes que dependem de classes android.test descontinuadas baseadas em JUnit3, adicione os elementos <uses-library> necessários ao manifesto do seu app de teste. Por exemplo, se você adicionar testes que dependem da biblioteca android.test.runner, adicione o seguinte elemento ao manifesto do app:

<!-- You don't need to include android:required="false" if your app's

   minSdkVersion is 28 or higher. -->

<uses-library android:name="android.test.runner"

       android:required="false" />

Para determinar a biblioteca que contém uma determinada classe baseada em JUnit, consulte Bibliotecas baseadas em JUnit.

Considerações ao usar classes descontinuadas e direcionar para o Android 9 ou

mais alta

As orientações desta seção se aplicam somente se você é destinado ao Android 9 (nível 28 da API) ou versões mais recentes e a versão mínima do SDK do app está definida como o Android 9.

A biblioteca android.test.runner depende implicitamente das bibliotecas android.test.base e android.test.mock. Se o app usa apenas classes de android.test.base ou android.test.mock, você pode incluir as bibliotecas por conta própria:

<!-- For both of these declarations, you don't need to include
   android:required="false" if your app's minSdkVersion is 28
   or higher. -->

<uses-library android:name="android.test.base"
       android:required="false" />
<uses-library android:name="android.test.mock"
       android:required="false" />