راه اندازی پروژه برای AndroidX Test

AndroidX Test مجموعه‌ای از کتابخانه‌های Jetpack است که به شما امکان می‌دهد تست‌هایی را روی برنامه‌های اندروید اجرا کنید. همچنین مجموعه‌ای از ابزارها را برای کمک به شما در نوشتن این تست‌ها ارائه می‌دهد.

برای مثال، AndroidX Test قوانین JUnit4 را برای شروع فعالیت‌ها و تعامل با آنها در تست‌های JUnit4 فراهم می‌کند. همچنین شامل چارچوب‌های تست رابط کاربری مانند Espresso، UI Automator و شبیه‌ساز Robolectric است.

کتابخانه‌های تست AndroidX را اضافه کنید

برای استفاده از AndroidX Test، باید وابستگی‌های پروژه برنامه خود را در محیط توسعه خود تغییر دهید.

اضافه کردن وابستگی‌های Gradle

برای تغییر وابستگی‌های پروژه اپلیکیشن خود، مراحل زیر را انجام دهید:

  • مرحله ۱ : فایل build.gradle مربوط به ماژول Gradle خود را باز کنید.
  • مرحله ۲ : در بخش مخازن، مطمئن شوید که مخزن Maven گوگل نمایش داده می‌شود:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • مرحله ۳ : برای هر بسته AndroidX Test که می‌خواهید استفاده کنید، نام بسته آن را به بخش وابستگی‌ها اضافه کنید. برای مثال، برای افزودن بسته espresso-core ، خطوط زیر را اضافه کنید:

گرووی

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

کاتلین

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

کاتلین

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 مراجعه کنید.

ملاحظات هنگام استفاده از کلاس‌های منسوخ‌شده و هدف قرار دادن اندروید ۹ یا

بالاتر

راهنمایی‌های این بخش فقط در صورتی اعمال می‌شود که اندروید ۹ (سطح API 28) یا بالاتر را هدف قرار دهید و حداقل نسخه SDK برای برنامه شما روی اندروید ۹ تنظیم شده باشد.

کتابخانه 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" />