नोट: यह समाधान ग्रहण इंडिगो (3.8.2) का उपयोग करने पर आधारित है और इसे अन्य आईडीई के लिए थोड़ा अलग तरीके से लागू करना पड़ सकता है, हालांकि मूल सिद्धांत समान होंगे।
मेरे पास समान मुद्दे थे और मैंने पाया कि निम्नलिखित हमेशा काम करते हैं:
( नोट: ये निर्देश खरोंच से एक नए प्रोजेक्ट समूह के निर्माण के लिए हैं। यदि आपने पहले ही प्रोजेक्ट समूह के कुछ हिस्सों का निर्माण कर लिया है, तो आपको अपनी परियोजनाओं को संशोधित करना पड़ सकता है, ताकि वे उसी तरह से कनेक्ट हों। )
- निर्माण के दौरान "इस लाइब्रेरी" चेकबॉक्स की जांच करके एक नया एंड्रॉइड लाइब्रेरी प्रोजेक्ट बनाएं। (उदाहरण के लिए "रेमिंगटनएंड्रॉइडटूल" नामक एक एंड्रॉइड प्रोजेक्ट)।
- एंड्रॉइड लाइब्रेरी प्रोजेक्ट बनाएं और सत्यापित करें कि उसने बिन फ़ोल्डर में जार फ़ाइल बनाई है। (उदाहरण के लिए "रेमिंगटनएंड्रॉइडटूलसजर" नामक एक जार फ़ाइल।)
- एंड्रॉइड ऐप के परीक्षण के लिए एक खाली एंड्रॉइड प्रोजेक्ट बनाएं जो एंड्रॉइड टेस्ट ऐप के रूप में काम करेगा। (उदाहरण के लिए "रेमिंगटनएंड्रॉइडटूलस्टेप" नामक एक एंड्रॉइड प्रोजेक्ट)। आपको एंड्रॉइड टेस्ट ऐप प्रोजेक्ट के स्रोत कोड या संसाधनों को संशोधित करने की आवश्यकता नहीं होगी जब तक कि आपके पास ऐसा कुछ न हो जिसे परीक्षण के लिए जोड़ा जाना चाहिए। एंड्रॉइड टेस्ट ऐप प्रोजेक्ट में कई चीजों को बिना किसी संशोधन के परीक्षण किया जा सकता है। एंड्रॉइड टेस्ट ऐप प्रोजेक्ट आपके एंड्रॉइड लाइब्रेरी प्रोजेक्ट और एंड्रॉइड जूनिट प्रोजेक्ट के बीच एक पुल है जो एंड्रॉइड लाइब्रेरी प्रोजेक्ट का परीक्षण एंड्रॉइड जूनिट के माध्यम से संभव बनाता है।
- एंड्रॉइड टेस्ट ऐप प्रोजेक्ट के लिए जावा बिल्ड पथ के लाइब्रेरी टैब पर जाएं ("इस उदाहरण में रेमिंगटनएंड्रॉइडटूलस्टेप")।
- एंड्रॉइड लाइब्रेरी प्रोजेक्ट के जार फ़ाइल ("रेमिंगटनएंड्रॉइडटूलसजर" इस उदाहरण में जोड़ें) ("रेमिंगटनएंड्रॉइडटूल" इस उदाहरण में) "ऐड जार ..." बटन के माध्यम से।
- एक नया एंड्रॉइड टेस्ट प्रोजेक्ट बनाएं (उदाहरण के लिए "रेमिंगटनएंड्रॉइडटूलसटेस्टर") जो एक एंड्रॉइड लाइब्रेरी टेस्टर के रूप में काम करेगा और लक्ष्य के रूप में एंड्रॉइड टेस्ट ऐप प्रोजेक्ट ("रेमिंगटनएंड्रॉइडटसटेस्टएप") का चयन करेगा।
- एंड्रॉइड लाइब्रेरी टेस्टर प्रोजेक्ट के लिए जावा बिल्ड पथ के लाइब्रेरी टैब पर जाएं ("उदाहरण में रेमिंगटनएंड्रॉइडटॉल्सटेस्टर")।
- एंड्रॉइड लाइब्रेरी प्रोजेक्ट के जार फ़ाइल ("रेमिंगटनएंड्रॉइडटूलसजर" इस उदाहरण में जोड़ें) ("रेमिंगटनएंड्रॉइडटूल" इस उदाहरण में) "ऐड जार ..." बटन के माध्यम से।
- एंड्रॉइड लाइब्रेरी टेस्टर प्रोजेक्ट में अपने एंड्रॉइड पैकेज का अंतिम फ़ोल्डर ढूंढें (उदाहरण के लिए "danny.remington.remington_android_tools_test_app.test)" और उदाहरण के लिए एक परीक्षण वर्ग ("MainActivityestest") जोड़ें, जो ActivInstrumentationTestCase2 से विरासत में मिला है।
- एक्टिविटीइंस्टीट्यूटेशनटैस्ट 2 के पैरामीटर के रूप में एंड्रॉइड टेस्ट ऐप ("उदाहरण में" टेस्टअक्टिविटी ") का उपयोग करने के लिए टेस्ट क्लास (" टेस्टअक्टिविटी ") का उपयोग करें।
- टेस्ट क्लास ("TestActivityTest" को इस उदाहरण में संपादित करें) और एक डिफॉल्ट कंस्ट्रक्टर बनाएं जो सुपर (क्लास) के लिए कॉल करता है और एंड्रॉइड टेस्ट ऐप की क्लास में पास होता है (उदाहरण के लिए "TestActivity.class")।
आपको तीन परियोजनाओं (एंड्रॉइड लाइब्रेरी, एंड्रॉइड टेस्ट ऐप, एंड्रॉइड लाइब्रेरी परीक्षक) के साथ समाप्त होना चाहिए जो इस तरह दिखते हैं:
आपको अपने एंड्रॉइड लाइब्रेरी के परीक्षण के लिए एक वर्ग के साथ समाप्त होना चाहिए जो इस तरह दिखता है:
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
फिर आप अपनी इच्छानुसार कोई भी परीक्षण जोड़ सकते हैं। आपको अपने परीक्षण को चलाने के लिए Android टेस्ट ऐप ("रेमिंगटनएंड्रॉइडटेस्टस्टेप" इस संदर्भ में) का संदर्भ लेने की आवश्यकता नहीं होगी, जब तक कि उन्हें एंड्रॉइड विशिष्ट घटक (उदाहरण के लिए एसेट्स फ़ोल्डर) की आवश्यकता न हो। यदि आपको किसी एंड्रॉइड के विशिष्ट घटकों को एक्सेस करने की आवश्यकता है, तो आप इस उदाहरण में एंड्रॉइड टेस्ट ऐप ("रेमिंगटनएंड्रॉइडटस्टेप" को संशोधित करके) कर सकते हैं और फिर इसे मानक एंड्रॉइड जूनिट एपीआई द्वारा प्रदान किए गए इंस्ट्रूमेंटेशन के माध्यम से संदर्भित कर सकते हैं। (आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: http://developer.android.com/tools/testing/testing_android.html )