এসপ্রেসো ডিভাইস API দিয়ে স্ক্রিন কনফিগারেশন পরিবর্তনের বিরুদ্ধে পরীক্ষা করুন

আপনার অ্যাপটি পরীক্ষা করার জন্য Espresso ডিভাইস API ব্যবহার করুন যখন ডিভাইসটি সাধারণ কনফিগারেশন পরিবর্তনের মধ্য দিয়ে যায়, যেমন ঘূর্ণন এবং স্ক্রিন খোলা। এসপ্রেসো ডিভাইস API আপনাকে একটি ভার্চুয়াল ডিভাইসে এই কনফিগারেশন পরিবর্তনগুলি অনুকরণ করতে দেয় এবং আপনার পরীক্ষাগুলি সিঙ্ক্রোনাসভাবে চালায়, তাই একটি সময়ে শুধুমাত্র একটি UI অ্যাকশন বা দাবি ঘটে এবং আপনার পরীক্ষার ফলাফলগুলি আরও নির্ভরযোগ্য। আপনি যদি Espresso-এর সাথে UI পরীক্ষা লেখার জন্য নতুন হন, তাহলে এর ডকুমেন্টেশন দেখুন।

এসপ্রেসো ডিভাইস API ব্যবহার করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • অ্যান্ড্রয়েড স্টুডিও ইগুয়ানা বা উচ্চতর
  • Android Gradle প্লাগইন 8.3 বা উচ্চতর
  • Android এমুলেটর 33.1.10 বা উচ্চতর
  • Android ভার্চুয়াল ডিভাইস যা API স্তর 24 বা উচ্চতর চালায়

Espresso ডিভাইস API এর জন্য আপনার প্রকল্প সেট আপ করুন

আপনার প্রকল্প সেট আপ করতে যাতে এটি এসপ্রেসো ডিভাইস API সমর্থন করে, নিম্নলিখিতগুলি করুন:

  1. টেস্ট ডিভাইসে টেস্ট পাস কমান্ড দিতে, androidTest সোর্স সেটের ম্যানিফেস্ট ফাইলে INTERNET এবং ACCESS_NETWORK_STATE অনুমতি যোগ করুন:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
  2. gradle.properties ফাইলে enableEmulatorControl পরীক্ষামূলক পতাকা সক্ষম করুন:

      android.experimental.androidTest.enableEmulatorControl=true
      
  3. মডিউল-স্তরের বিল্ড স্ক্রিপ্টে emulatorControl বিকল্পটি সক্ষম করুন:

    কোটলিন

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    গ্রোভি

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      
  4. মডিউল-স্তরের বিল্ড স্ক্রিপ্টে, আপনার প্রকল্পে এসপ্রেসো ডিভাইস লাইব্রেরি আমদানি করুন:

    কোটলিন

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:1.0.1")
      }
      

    গ্রোভি

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.1'
      }
      

সাধারণ কনফিগারেশন পরিবর্তনের বিরুদ্ধে পরীক্ষা করুন

এসপ্রেসো ডিভাইস API-এর একাধিক স্ক্রিন ওরিয়েন্টেশন এবং ভাঁজযোগ্য অবস্থা রয়েছে যা আপনি ডিভাইস কনফিগারেশন পরিবর্তনগুলি অনুকরণ করতে ব্যবহার করতে পারেন।

পর্দা ঘূর্ণন বিরুদ্ধে পরীক্ষা

ডিভাইসের স্ক্রিন ঘোরার সময় আপনার অ্যাপে কী ঘটবে তা পরীক্ষা করার একটি উদাহরণ এখানে দেওয়া হল:

  1. প্রথমত, একটি সামঞ্জস্যপূর্ণ প্রারম্ভিক অবস্থার জন্য ডিভাইসটিকে প্রতিকৃতি মোডে সেট করুন:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
      
  2. একটি পরীক্ষা তৈরি করুন যা পরীক্ষা সম্পাদনের সময় ডিভাইসটিকে ল্যান্ডস্কেপ অভিযোজনে সেট করে:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
      
  3. স্ক্রিন ঘোরার পরে, UI আশানুরূপ নতুন লেআউটের সাথে খাপ খায় কিনা তা পরীক্ষা করুন।

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }
      

পর্দা উন্মোচন বিরুদ্ধে পরীক্ষা

আপনার অ্যাপটি যদি ভাঁজ করা যায় এমন ডিভাইসে থাকে এবং স্ক্রিনটি উন্মোচিত হয় তবে কীভাবে তা পরীক্ষা করবেন তার একটি উদাহরণ এখানে দেওয়া হল:

  1. প্রথমে, onDevice().setClosedMode() কল করে ডিভাইসটিকে ভাঁজ অবস্থায় নিয়ে পরীক্ষা করুন। নিশ্চিত করুন যে আপনার অ্যাপের লেআউট কমপ্যাক্ট স্ক্রিনের প্রস্থের সাথে খাপ খায়।

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
      
  2. সম্পূর্ণরূপে উন্মোচিত অবস্থায় রূপান্তর করতে, onDevice().setFlatMode() এ কল করুন। অ্যাপের লেআউটটি প্রসারিত আকারের ক্লাসের সাথে খাপ খায় কিনা তা পরীক্ষা করুন।

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }
      

আপনার পরীক্ষার জন্য কোন ডিভাইসের প্রয়োজন তা উল্লেখ করুন

আপনি যদি এমন একটি পরীক্ষা চালাচ্ছেন যা ভাঁজ করা যায় না এমন একটি ডিভাইসে ভাঁজ করার ক্রিয়া সম্পাদন করে, তাহলে পরীক্ষাটি সম্ভবত ব্যর্থ হবে। চলমান ডিভাইসের সাথে প্রাসঙ্গিক পরীক্ষাগুলি চালানোর জন্য, @RequiresDeviceMode টীকাটি ব্যবহার করুন। টেস্ট রানার স্বয়ংক্রিয়ভাবে এমন ডিভাইসগুলিতে চলমান পরীক্ষাগুলি এড়িয়ে যায় যা পরীক্ষা করা কনফিগারেশনকে সমর্থন করে না। আপনি প্রতিটি পরীক্ষা বা একটি সম্পূর্ণ পরীক্ষার ক্লাসে ডিভাইসের প্রয়োজনীয়তার নিয়ম যোগ করতে পারেন।

উদাহরণস্বরূপ, নির্দিষ্ট করার জন্য যে একটি পরীক্ষা শুধুমাত্র সেই ডিভাইসগুলিতে চালানো উচিত যা একটি ফ্ল্যাট কনফিগারেশনে উন্মোচন সমর্থন করে, আপনার পরীক্ষায় নিম্নলিখিত @RequiresDeviceMode কোড যোগ করুন:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}