ट्रेड फ़ेडरेशन में होस्ट-ड्रिवन टेस्ट लिखें

इस पेज में, होस्ट की ओर से चलाए जा रहे, JUnit4 स्टाइल वाले डिवाइस टेस्ट को लिखने का तरीका बताया गया है. इसका मतलब है कि हार्नेस के होस्ट पक्ष ने इनके ख़िलाफ़ कार्रवाइयां की हैं डिवाइस.

ध्यान दें कि हम "होस्ट-साइड" टेस्ट और "होस्ट के ज़रिए" होने वाले टेस्ट में थोड़ा-बहुत भिन्न:

  • होस्ट-ड्रिवन टेस्ट: यह उस होस्ट पर चल रहा टेस्ट होता है जो किसी एक या अन्य डिवाइस. जिस सिस्टम की जांच की जा रही है (एसयूटी), खुद होस्ट पर नहीं है, लेकिन को होस्ट से टेस्ट किया जा रहा है.
  • होस्ट-साइड टेस्ट: क्या कोई टेस्ट पूरी तरह से होस्ट पर चल रहा है और किसी चीज़ की जांच की जा रही है का इस्तेमाल सिर्फ़ होस्ट पर किया जा सकता है, जैसे कि यूनिट टेस्ट.

इंस्ट्रुमेंटेशन टेस्ट के बजाय होस्ट-ड्रिवन टेस्ट क्यों बनाएं?

कुछ जांचों के लिए, आपको डिवाइस की पूरी स्थिति पर असर डालना पड़ सकता है. जैसे, फिर से चालू करें. इंस्ट्रुमेंटेशन परीक्षण मामले में, रीबूट करने से इंस्ट्रुमेंटेशन के बिना जांच जारी नहीं रखी जा सकी और कोई नतीजा उपलब्ध नहीं होगा.

होस्ट-ड्रिवन टेस्ट से भी सेटअप के ऐसे अन्य चरण जुड़ सकते हैं जिनके लिए इंटरैक्शन की ज़रूरत होती है उन बाहरी डिवाइसों के साथ कर सकते हैं जिन पर परीक्षण निर्भर करता है.

होस्ट-ड्रिवन टेस्ट, इस्तेमाल के इन उदाहरणों को हैंडल कर सकता है. साथ ही, इससे ज़्यादा स्थितियों वाले डिवाइस पर. अगर ऐसी स्थिति में, होस्ट-ड्रिवन टेस्ट सबसे सही रहेगा.

होस्ट-ड्रिवन टेस्ट को TF में कैसे लिखा जाता है?

यहां एक सैंपल दिया गया है:

@RunWith(DeviceJUnit4ClassRunner.class)
public class SampleHostJUnit4DeviceTest extends BaseHostJUnit4Test {
    @Before
    public void setUp() throws Exception {
       // Some setup
    }

    @Test
    public void testCheckWeHaveDevice() throws Exception {
        Assert.assertNotNull(getDevice());
    }
}

ट्रेड फ़ेडरेशन में होस्ट-ड्रिवन टेस्ट, DeviceJUnit4ClassRunner से किए जाते हैं JUnit4 टेस्ट रनर. टेस्ट क्लास का पूरा स्ट्रक्चर एक ही होता है सामान्य JUnit4 टेस्ट:

  • @BeforeClass
  • @Before
  • @Test
  • @After
  • @AfterClass
  • Assume, Assert

BaseHostJunit4Test को बढ़ाया जा रहा है का इस्तेमाल करके, ज़रूरी टेस्टिंग यूटिलिटी एपीआई को इनहेरिट किया जा सकता है. जैसे:

  • installPackage: टारगेट किए गए डिवाइस पर APK इंस्टॉल करने की अनुमति देता है.
  • installPackageAsUser: टारगेट पर उपयोगकर्ता के तौर पर APK इंस्टॉल करने की अनुमति देता है डिवाइस.
  • uninstallPackage: APK अनइंस्टॉल करने की अनुमति देता है.
  • isPackageInstalled: देखें कि कोई पैकेज इंस्टॉल है या नहीं.
  • hasDeviceFeature: देखें कि डिवाइस पर कोई सुविधा काम करती है या नहीं. (pm list features)
  • runDeviceTests(DeviceTestRunOptions options): इंस्ट्रुमेंटेशन चलाएं DeviceTestRunOptions का इस्तेमाल करके टारगेट डिवाइस की जांच करें का इस्तेमाल करें.

ट्रेडेड डिवाइस ऑब्जेक्ट का ऐक्सेस भी दें:

  • getDevice(): डिवाइस में बदलाव करने के लिए TF डिवाइस ऑब्जेक्ट दिखाता है.
  • getBuild(): बिल्ड की जानकारी वाला TF ऑब्जेक्ट दिखाता है, ताकि बिल्ड.
  • getAbi(): वह एबीआई लौटाता है जिसके लिए टेस्ट चल रहा है.

ट्रेडेड सहायता: हर क्लास के हिसाब से डिवाइस तैयार करना और उसकी सफ़ाई करना

JUnit4 @BeforeClass और @AfterClass सिर्फ़ स्टैटिक तरीकों पर लागू होती हैं, इस वजह से, कुछ काम करने के लिए #getDevice() हैंडलर का इस्तेमाल नहीं किया जा सकता डिवाइस के हिसाब से, एक बार इस्तेमाल होने वाला, हर क्लास के हिसाब से सेटअप या क्लीनअप करें. इस समस्या को हल करने के लिए, ट्रेडेड एनोटेशन.

  • @beforeClassWithInfo: यह @beforeClass एनोटेशन से पहले चलता है
  • @AfterClassWithInfo: @AfterClass एनोटेशन के बाद चलता है
   @BeforeClassWithInfo
   public static void beforeClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

   @AfterClassWithInfo
   public static void afterClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

TestInformation आपको ऐसे डिवाइस और स्टोर प्रॉपर्टी इस्तेमाल करने की अनुमति देता है जिन्हें का इस्तेमाल स्टैटिक या नॉन-स्टैटिक स्कोप में किया जाता है. BaseHostJUnit4Test समर्थन करता है #getTestInformation() के ज़रिए, बिना स्टैटिक स्कोप में TestInformation को हासिल किया जा रहा है.

अगर आप BaseHostJUnit4Test का विस्तार नहीं कर रहे हैं, तो आप TestInformation ऑब्जेक्ट पाने के लिए, ITestInformationReceiver.

ट्रेडफ़ेड में होस्ट-ड्रिवन टेस्ट को कैसे कॉन्फ़िगर करें?

ट्रेडेड एक्सएमएल कॉन्फ़िगरेशन फ़ाइल में, होस्ट-ड्रिवन टेस्ट होस्टटेस्ट रनर.

<test class="com.android.tradefed.testtype.HostTest" >
    <option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>