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

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

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

إضافة مكتبات اختبار AndroidX

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

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

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

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

رائع

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

لغة Kotlin

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

في ما يلي أكثر العناصر الاعتمادية المتاحة لاختبار AndroidX:

رائع

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 أو

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

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