إعداد مشروع لاختبار AndroidX

‫AndroidX Test هي مجموعة من مكتبات Jetpack تتيح لك إجراء اختبارات على تطبيقات Android. وتوفّر أيضًا سلسلة من الأدوات لمساعدتك في كتابة هذه الاختبارات.

على سبيل المثال، توفّر AndroidX Test قواعد JUnit4 لبدء الأنشطة والتفاعل معها في اختبارات JUnit4. وتحتوي أيضًا على أُطر عمل لاختبار واجهة المستخدم، مثل Espresso وUI Automator ومحاكي Robolectric.

إضافة مكتبات AndroidX Test

لاستخدام AndroidX Test، عليك تعديل تبعيات مشروع تطبيقك ضمن بيئة التطوير.

إضافة تبعيات Gradle

لتعديل تبعيات مشروع تطبيقك، اتّبِع الخطوات التالية:

  • الخطوة 1: افتح ملف build.gradle لوحدة Gradle.
  • الخطوة 2: في قسم المستودعات، تأكَّد من ظهور مستودع Maven من Google:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • الخطوة 3: لكل حزمة AndroidX Test تريد استخدامها، أضِف اسم الحزمة إلى قسم التبعيات. على سبيل المثال، لإضافة حزمة espresso-core، أضِف الأسطر التالية:

أنيق

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

Kotlin

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

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

تحتوي صفحة ملاحظات الإصدار على جدول يتضمّن أحدث الإصدارات لكل عنصر.

راجِع فهرس الحزم أو فهرس الفئات للحصول على مستندات مرجعية محدّدة حول هذه المكتبات.

المشاريع التي تستخدم فئات متوقّفة نهائيًا

إذا كان تطبيقك يستخدم اختبارات تعتمد على فئات 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 (المستوى 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" />