Configurar projetos para o AndroidX Test

O AndroidX Test é uma coleção de bibliotecas do Jetpack que permite executar testes. em relação a apps Android. Ele também fornece uma série de ferramentas para ajudar você a escrever esses provas.

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

Adicionar bibliotecas do AndroidX Test

Para usar o AndroidX Test, é necessário modificar as dependências do projeto do seu app no seu 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 "Repositórios", verifique se o SDK do Google repositório é exibido:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • Etapa 3: adicionar cada pacote do AndroidX Test que você quer usar ao na seção de dependências. Por exemplo, para adicionar o pacote espresso-core, adicione o 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 de teste do AndroidX mais comuns disponíveis:

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 pacote ou o Índice de classes para uma referência específica a documentação sobre essas bibliotecas.

Projetos que usam classes obsoletas

Se o app usa testes que dependem do android.test baseado em JUnit3 descontinuado classes , como InstrumentationTestCase e TestSuiteLoader, as seguintes linhas na 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 baseadas em JUnit3 descontinuadas, adicione os elementos <uses-library> necessários ao manifesto do app de teste. Para Por exemplo, se você adicionar testes que dependem da biblioteca android.test.runner, adicione o seguinte elemento ao manifesto do seu 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 obsoletas e direcionadas ao Android 9 ou

mais alta

As orientações desta seção se aplicam somente se você estiver segmentando o Android 9 (nível 28 da API) ou mais recente e a versão mínima do SDK do app precisa estar definida como o Android 9.

A biblioteca android.test.runner depende implicitamente do android.test.base. e android.test.mock. Caso seu app use apenas turmas da android.test.base ou android.test.mock, é possível incluir as bibliotecas ao 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" />