अगर डेटा स्टोर करने और वापस पाने के लिए या अन्य ऐप्लिकेशन के डेटा को ऐक्सेस करने की अनुमति दें, तो आपको यह पक्का करने के लिए अपने प्रोवाइडर की जांच करनी चाहिए कि यह अनपेक्षित तरीके से व्यवहार नहीं करता है. इस लेसन में बताया गया है कि सार्वजनिक तौर पर कॉन्टेंट को टेस्ट करने का तरीका क्या है और यह उन कंपनियों पर भी लागू होता है जिन्हें निजी रखा जाता है आपका ऐप्लिकेशन.
कॉन्टेंट देने वालों के लिए इंटिग्रेशन टेस्ट बनाना
कॉन्टेंट देने वाले लोग आपको उपयोगकर्ता का असल डेटा ऐक्सेस करने की सुविधा देते हैं. इसलिए, यह पक्का करना ज़रूरी है कि की जांच करें कि आपको कॉन्टेंट देने वाले को एक आइसोलेटेड टेस्टिंग एनवायरमेंट में टेस्ट करना है. यह अप्रोच की मदद से, सिर्फ़ उस डेटा डिपेंडेंसी पर काम किया जा सकता है जो टेस्ट केस. इसका मतलब यह भी है कि आपके टेस्ट में उपयोगकर्ता के असल डेटा में कोई बदलाव नहीं होता. इसके लिए उदाहरण के लिए, आपको ऐसा टेस्ट नहीं लिखना चाहिए जो फ़ेल होने की वजह से फ़ेल हो जाए . इसी तरह, आपके टेस्ट को जोड़ने या मिटाने से बचना चाहिए सेवा देने वाली कंपनी की वास्तविक संपर्क जानकारी होती है.
कॉन्टेंट देने वाले की अलग से जांच करने के लिए, ProviderTestCase2
का इस्तेमाल करें
क्लास. इस क्लास में, आपको Android मॉक ऑब्जेक्ट क्लास का इस्तेमाल करने की सुविधा मिलती है. जैसे,
IsolatedContext
और MockContentResolver
की मदद से फ़ाइल और
उपयोगकर्ता के असल डेटा पर असर डाले बिना, डेटाबेस की जानकारी इकट्ठा करता है.
आपका इंटिग्रेशन टेस्ट, JUnit 4 टेस्ट क्लास के तौर पर लिखा जाना चाहिए. ज़्यादा जानकारी के लिए JUnit 4 टेस्ट क्लास बनाने और JUnit 4 के दावों का इस्तेमाल करने के बारे में जानने के लिए, इसे बनाएं लोकल यूनिट टेस्ट क्लास.
अगर आपको कॉन्टेंट देने वाले के लिए इंटिग्रेशन टेस्ट बनाना है, तो आपको ये काम करने होंगे चरण:
ProviderTestCase2
की सब-क्लास के तौर पर अपनी टेस्ट क्लास बनाएं.- वह
AndroidJUnitRunner
क्लास बताएं जो AndroidX Test से मिलती है को डिफ़ॉल्ट टेस्ट रनर के तौर पर सेट करें. ApplicationProvider
क्लास सेContext
ऑब्जेक्ट सेट करें. ज़्यादा जानकारी के लिए, का एक उदाहरण नीचे दिया गया है.
Kotlin
@Throws(Exception::class) override fun setUp() { super.setUp() context = ApplicationProvider.getApplicationContext<Context>() }
Java
@Override protected void setUp() throws Exception { super.setUp(); setContext(ApplicationProvider.getApplicationContext()); }
ProviderTestCase2 कैसे काम करता है
आपने ProviderTestCase2
सब-क्लास वाली कंपनी को टेस्ट किया है. यह बेस क्लास
AndroidTestCase
को बड़ा करता है, इसलिए यह JUnit टेस्टिंग फ़्रेमवर्क को इस तरह उपलब्ध कराता है
ऐप्लिकेशन अनुमतियों की जांच करने के लिए खास Android तरीकों का इस्तेमाल करें. सबसे ज़्यादा
इस क्लास की एक अहम सुविधा इसका इनिशलाइज़ेशन है, जिससे
आइसोलेटेड टेस्ट एनवायरमेंट.
प्रोसेस शुरू करना
ProviderTestCase2
के लिए कंस्ट्रक्टर में शुरू किया जाता है,
जिसकी सब-क्लास अपने कंस्ट्रक्टर में कॉल करती हैं. ProviderTestCase2
कंस्ट्रक्टर एक IsolatedContext
ऑब्जेक्ट बनाता है, जो फ़ाइल और
डेटाबेस कार्रवाइयों को पूरा करता है, लेकिन Android सिस्टम के साथ दूसरे इंटरैक्शन को रोक देता है.
फ़ाइल और डेटाबेस की कार्रवाइयां एक ऐसी डायरेक्ट्री में होती हैं जो
यह डिवाइस या एम्युलेटर के लिए उपलब्ध है और इसमें एक खास प्रीफ़िक्स लगा हो.
इसके बाद, कंस्ट्रक्टर, रिज़ॉल्वर के तौर पर इस्तेमाल करने के लिए एक MockContentResolver
बनाता है
का विकल्प चुना गया है.
आखिर में, कंस्ट्रक्टर, टेस्ट में शामिल प्रोवाइडर का इंस्टेंस बनाता है. यह है
एक सामान्य ContentProvider
ऑब्जेक्ट, लेकिन यह अपने पूरे एनवायरमेंट की जगह ले लेता है
IsolatedContext
से मिली जानकारी के आधार पर, यह सिर्फ़
आइसोलेटेड टेस्ट एनवायरमेंट की जानकारी. क्लास में की गई टेस्ट केस स्टडी में की गई सभी जांच
इस आइसोलेटेड ऑब्जेक्ट के सामने डालें.
आप कॉन्टेंट देने वालों के लिए, इंस्ट्रुमेंट की तरह ही इंटिग्रेशन टेस्ट करते हैं यूनिट टेस्ट का इस्तेमाल कर सकते हैं.
क्या टेस्ट करें
कॉन्टेंट देने वालों की जांच करने के लिए, यहां कुछ खास दिशा-निर्देश दिए गए हैं.
- रिज़ॉल्वर तरीकों की मदद से जांच करना: हालांकि, प्रोवाइडर को इंस्टैंशिएट किया जा सकता है
ऑब्जेक्ट
ProviderTestCase2
में, आपको इसका इस्तेमाल करके रिज़ॉल्वर ऑब्जेक्ट से हमेशा जांच करनी चाहिए का इस्तेमाल करें. ऐसा करने से यह पक्का हो जाता है कि आप वही इंटरैक्शन करता है, जिसका इस्तेमाल कोई सामान्य ऐप्लिकेशन करता है. - किसी सार्वजनिक कंपनी को अनुबंध के तौर पर टेस्ट करना: अगर आपको सेवा देने वाली कंपनी को
सार्वजनिक और अन्य ऐप्लिकेशन के लिए उपलब्ध हो, तो आपको इसकी जांच एक अनुबंध के रूप में करनी चाहिए.
ऐसा करने के तरीके के कुछ उदाहरण यहां दिए गए हैं:
- कॉन्सटेंट की मदद से टेस्ट करें जिसे आपका प्रोवाइडर सार्वजनिक तौर पर दिखाता है. उदाहरण के लिए, देखें का इस्तेमाल किया जा सकता है. इन्हें हमेशा ऐसे कॉन्सटेंट होने चाहिए जिन्हें सेवा देने वाली कंपनी ने सार्वजनिक रूप से तय किया हो.
- उन सभी यूआरआई की जांच करें जो आपको सेवा देने वाली कंपनी उपलब्ध कराती है. आपको सेवा देने वाली कंपनी, कई कंपनियां यूआरआई, जिनमें हर एक डेटा के अलग-अलग पहलू की जानकारी देता है.
- अमान्य यूआरआई की जांच करें. आपके यूनिट टेस्ट में जान-बूझकर प्रोवाइडर को
अमान्य यूआरआई खोजें और गड़बड़ियां ढूंढें. एक अच्छा प्रोवाइडर डिज़ाइन है कि
अमान्य यूआरआई के लिए
IllegalArgumentException
.
- सेवा देने वाली स्टैंडर्ड कंपनी के इंटरैक्शन की जांच करना: सेवा देने वाली ज़्यादातर कंपनियां छह ऐक्सेस देती हैं
तरीके:
query()
,insert()
,delete()
,update()
,getType()
, औरonCreate()
. जांच से इस बात की पुष्टि होनी चाहिए कि ये सभी तरीके काम कर रहे हैं या नहीं. - कारोबार के नियम की जांच करना: अगर कॉन्टेंट देने वाला, कारोबारी नियम लागू करता है, की पहचान करें इसकी जांच करनी चाहिए. कारोबारी नियम में अमान्य वैल्यू, वित्तीय या अंकगणित की गणनाएं, अंक हटाना या डुप्लीकेट जोड़ना.