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:
dependencies {
       
...
        androidTestImplementation
"androidx.test.espresso:espresso-core:$espressoVersion"
   
}
dependencies {
       
...
        androidTestImplementation
('androidx.test.espresso:espresso-core:$espressoVersion')
   
}

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

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"
}
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" />