إعداد مشروع لاختبار 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، أضِف الأسطر التالية:

Groovy

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

Kotlin

dependencies {
        ...
        androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion')
    }

في ما يلي تبعيات AndroidX Test الأكثر شيوعًا المتاحة:

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

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

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

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

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

اعتبارات عند استخدام فئات تم إيقافها واستهداف الإصدار 9 من نظام التشغيل Android أو إصدار أحدث

أعلى من درجة الحرارة المقترَحة

لا تنطبق الإرشادات الواردة في هذا القسم إلا إذا كنت تستهدف الإصدار 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" />