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

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

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

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

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

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

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

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

Groovy

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

Kotlin

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

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

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.

الاعتبارات الواجب مراعاتها عند استخدام الصفوف المتوقّفة نهائيًا واستهداف 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" />