AndroidX Test — это набор библиотек Jetpack, который позволяет запускать тесты приложений Android. Он также предоставляет ряд инструментов, которые помогут вам написать эти тесты.
Например, AndroidX Test предоставляет правила JUnit4 для запуска действий и взаимодействия с ними в тестах JUnit4. Он также содержит среды тестирования пользовательского интерфейса, такие как Espresso, UI Automator и симулятор Robolectric.
Добавьте тестовые библиотеки AndroidX
Чтобы использовать AndroidX Test, вам необходимо изменить зависимости проекта приложения в среде разработки.
Добавить зависимости Gradle
Чтобы изменить зависимости проекта приложения, выполните следующие действия:
- Шаг 1. Откройте файл
build.gradle
для вашего модуля Gradle. - Шаг 2. Убедитесь, что в разделе «Репозитории» отображается репозиторий Google Maven:
allprojects {
repositories {
jcenter()
google()
}
}
- Шаг 3. Для каждого тестового пакета AndroidX, который вы хотите использовать, добавьте имя его пакета в раздел зависимостей. Например, чтобы добавить пакет
espresso-core
, добавьте следующие строки:
классный
dependencies { ... androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" }
Котлин
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion') }
Это наиболее распространенные доступные зависимости AndroidX Test:
классный
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") }
Страница «Примечания к выпуску» содержит таблицу с последними версиями для каждого артефакта.
Обратитесь к указателю пакетов или указателю классов для получения конкретной справочной документации по этим библиотекам.
Проекты, использующие устаревшие классы
Если ваше приложение использует тесты, основанные на устаревших классах android.test
на основе JUnit3, таких как InstrumentationTestCase
и TestSuiteLoader
, добавьте следующие строки в раздел android
файла:
android {
...
useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}
Добавить декларации манифеста
Чтобы запустить тесты, основанные на устаревших классах android.test
на основе JUnit3, добавьте необходимые элементы <uses-library>
в манифест вашего тестового приложения. Например, если вы добавляете тесты, зависящие от библиотеки android.test.runner
, добавьте в манифест вашего приложения следующий элемент:
<!-- 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" />
Чтобы определить библиотеку, содержащую данный класс на основе JUnit, см. раздел Библиотеки на основе JUnit .
Рекомендации по использованию устаревших классов и ориентации на Android 9 или
выше
Рекомендации в этом разделе применимы только в том случае, если вы ориентируетесь на Android 9 (уровень API 28) или более позднюю версию , а минимальная версия SDK для вашего приложения установлена на Android 9.
Библиотека android.test.runner
неявно зависит от библиотек android.test.base
и android.test.mock
. Если ваше приложение использует только классы из android.test.base
или android.test.mock
, вы можете включить библиотеки отдельно:
<!-- 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" />