AndroidX Test-এর জন্য প্রোজেক্ট সেট-আপ করা

AndroidX Test হল Jetpack লাইব্রেরির একটি সংগ্রহ যা আপনাকে Android অ্যাপের বিরুদ্ধে টেস্ট চালাতে দেয়। এছাড়াও, এইসব টেস্ট লেখার ব্যাপারে সাহায্য করার জন্য এটি একাধিক টুল প্রদান করে।

যেমন, AndroidX Test, JUnit4 টেস্টে অ্যাক্টিভিটি শুরু করতে এবং সেগুলির সাথে ইন্টার‍্যাক্ট করতে JUnit4 নিয়ম প্রদান করে। এছাড়াও, এতে Espresso, UI Automator এবং Robolectric সিমুলেটরের মতো UI টেস্টিং ফ্রেমওয়ার্ক থাকে।

AndroidX Test লাইব্রেরি যোগ করা

AndroidX Test ব্যবহার করতে হলে, আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের মধ্যে অ্যাপ প্রোজেক্টের ডিপেন্ডেন্সি পরিবর্তন করতে হবে।

Gradle ডিপেন্ডেন্সি যোগ করা

আপনার অ্যাপ প্রোজেক্টের ডিপেন্ডেন্সি পরিবর্তন করতে, এইসব ধাপ সম্পূর্ণ করুন:

  • ধাপ ১: আপনার Gradle মডিউলের জন্য build.gradle ফাইল খুলুন।
  • ধাপ ২: রিপোজিটরি বিভাগে, Google-এর Maven রিপোজিটরি দেখা যাচ্ছে কিনা তা নিশ্চিত করুন:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • ধাপ ৩: আপনি ব্যবহার করতে চান এমন প্রতিটি 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")
}

রিলিজ নোট পৃষ্ঠায় আর্টিফ্যাক্ট অনুযায়ী লেটেস্ট ভার্সন সহ একটি টেবিল থাকে।

এইসব লাইব্রেরির নির্দিষ্ট রেফারেন্স ডকুমেন্টেশনের জন্য প্যাকেজ ইন্ডেক্স বা ক্লাস ইন্ডেক্স দেখুন।

পুরনো হয়ে যাওয়া ক্লাস ব্যবহার করা প্রোজেক্ট

আপনার অ্যাপ যদি এমন টেস্ট ব্যবহার করে যা বাতিল করা JUnit3-ভিত্তিক android.test ক্লাসের উপর নির্ভর করে , যেমন InstrumentationTestCase এবং TestSuiteLoader, তাহলে ফাইলের android বিভাগে নিম্নলিখিত লাইন যোগ করুন:

android {
    ...
    useLibrary 'android.test.runner'

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
  }

ম্যানিফেস্ট ঘোষণা যোগ করা

সঞ্চালনের জন্য, JUnit3-ভিত্তিক android.test ক্লাস, যোগ করুন আপনার টেস্ট অ্যাপের ম্যানিফেস্টে প্রয়োজনীয় <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 (API লেভেল 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" />