Espresso Device API की मदद से, स्क्रीन कॉन्फ़िगरेशन में हुए बदलावों की जांच करें

डिवाइस के सामान्य स्थिति में आने पर, अपने ऐप्लिकेशन की जांच करने के लिए Espresso Device API का इस्तेमाल करें कॉन्फ़िगरेशन में बदलाव हो सकते हैं, जैसे कि स्क्रीन को घुमाना और स्क्रीन अनफ़ोल्ड करना. द एस्प्रेसो Device API के ज़रिए, कॉन्फ़िगरेशन के इन बदलावों को वर्चुअल डिवाइस पर सिम्युलेट किया जा सकता है और आपके टेस्ट को सिंक्रोनस रूप से लागू करता है, इसलिए यूज़र इंटरफ़ेस (यूआई) की सिर्फ़ एक कार्रवाई या दावा और आपके टेस्ट के नतीजे ज़्यादा भरोसेमंद होते हैं. अगर आपने यूज़र इंटरफ़ेस (यूआई) लिखना शुरू नहीं किया है, तो Espresso के टेस्ट के लिए, इसके दस्तावेज़ देखें.

Espresso Device API का इस्तेमाल करने के लिए, आपको इन चीज़ों की ज़रूरत होगी:

  • Android Studio Iguana या इसके बाद वाला वर्शन
  • 'Android Gradle प्लग इन 8.3' या इसके बाद वाला वर्शन
  • Android Emulator 33.1.10 या उसके बाद वाला वर्शन
  • Android वर्चुअल डिवाइस, जो एपीआई लेवल 24 या उसके बाद के वर्शन पर काम करता है

Espresso Device API के लिए अपना प्रोजेक्ट सेट अप करना

अपने प्रोजेक्ट को इस तरह सेट अप करें कि वह Espresso Device API के साथ काम करे:

  1. टेस्ट पास के निर्देशों को टेस्ट डिवाइस पर जोड़ने के लिए, androidTest सोर्स सेट में, मेनिफ़ेस्ट फ़ाइल के लिए INTERNET और ACCESS_NETWORK_STATE अनुमतियां:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
      
  2. इसमें enableEmulatorControl प्रयोग के तौर पर इस्तेमाल होने वाले फ़्लैग को चालू करें gradle.properties फ़ाइल:

      android.experimental.androidTest.enableEmulatorControl=true
      
  3. मॉड्यूल-लेवल बिल्ड में emulatorControl विकल्प चालू करें स्क्रिप्ट:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    ग्रूवी

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      
  4. मॉड्यूल-लेवल बिल्ड स्क्रिप्ट में, Espresso डिवाइस लाइब्रेरी को इंपोर्ट करें अपने प्रोजेक्ट में शामिल करें:

    Kotlin

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

    ग्रूवी

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

कॉन्फ़िगरेशन में किए गए सामान्य बदलावों के हिसाब से जांच करना

Espresso Device 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. स्क्रीन के घूमने के बाद, देखें कि यूज़र इंटरफ़ेस (यूआई), उम्मीद के मुताबिक नए लेआउट के हिसाब से ढल गया है या नहीं.

      @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() {
  ...
}