O AndroidX Test é uma coleção de bibliotecas do Jetpack que permite executar testes em apps Android. Ele também oferece uma série de ferramentas para ajudar você a escrever esses testes.
Por exemplo, o AndroidX Test oferece regras JUnit4 para iniciar atividades e interagir com elas em testes JUnit4. Ele também contém frameworks de teste de interface do usuário, como Espresso, UI Automator e o simulador Robolectric.
Adicionar bibliotecas do AndroidX Test
Para usar o AndroidX Test, é preciso 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 "repositories", 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 correspondente à seção dependencies. 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 do AndroidX Test 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 da versão contém uma tabela com as versões mais recentes por artefato.
Consulte o índice de pacotes ou o índice de classes para ver a documentação de referência específica sobre essas bibliotecas.
Projetos que usam classes obsoletas
Se o app usar testes que dependem de classes android.test
baseadas em JUnit3 descontinuadas , como InstrumentationTestCase
e TestSuiteLoader
, adicione 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. 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 segmentar o Android 9 ou
mais alta
As orientações apresentadas nesta seção só serão válidas se você estiver segmentando o Android 9 (nível 28 da API) ou versões mais recentes e se a versão mínima do SDK do app estiver definida como Android 9.
A biblioteca android.test.runner
depende implicitamente das bibliotecas android.test.base
e android.test.mock
. Se o app só usa classes de
android.test.base
ou android.test.mock
, você pode incluir as bibliotecas
sozinhas:
<!-- 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" />