ग्रहण में एक एंड्रॉइड प्रोजेक्ट को 2 परियोजनाओं से निर्मित: प्रोजेक्ट 1 जावा लाइब्रेरी है, जो एंड्रॉइड पर ठीक है। प्रोजेक्ट 2 लाइब्रेरी के लिए टेस्ट केस हैं, अनिवार्य रूप से कक्षाएं AndroidTestCase
तक विस्तारित करती हैं और एंड्रॉइड कंसोल पर परिणाम आउटपुट करती हैं। परियोजना 1 एक जावा परियोजना है, परियोजना 2 परियोजना 1.एक्लिप्स बनाम कंसोल रिमोट इंस्ट्रूमेंटेशन से एंड्रॉइड टेस्टकेस निष्पादन
पर समस्या विवरण के आधार एक Android परियोजना है: यदि मैं ग्रहण से परीक्षण को अंजाम के रूप में एंड्रॉयड JUnit टेस्ट वे बस के रूप में वे चाहिए, कोई त्रुटि चलाते हैं। हालांकि, मैं कमांडलाइन द्वारा फिर से उन्हें अमल करना चाहते हैं:
adb shell am instrument -w bla.bla/android.test.InstrumentationTestRunner
मैं logcat में
Cannot load class. Make sure it is in your apk. Class name: xyz
java.lang.ClassNotFoundException: xyz
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:234)
at android.test.ClassPathPackageInfoSource.createPackageInfo
....
Caused by: java.lang.ClassNotFoundException: xyz in loader
dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/bla.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
....
त्रुटियों की एक बहुत कुछ मिलता है।
टिप्पणियां: ग्रहण .apk इंस्टॉल करता है। बाद में मैंने पहले से ही इंस्टॉल किया है। एपीके, इसलिए उपलब्ध कक्षाएं समान होनी चाहिए। कक्षाओं को Class c = Class.forName("xyz")
के साथ गतिशील रूप से अनुरोध किया जाता है।
तो मेरा सवाल यह है कि ग्रहण स्थापित .apk को अलग तरीके से कैसे निष्पादित करता है ताकि उचित कक्षा रनटाइम पर पाई जा सके?
क्या मैं आपके एंड्रॉइड एप्लिकेशन का परीक्षण करने का एक बेहतर तरीका सुझा सकता हूं? मैं इसका उपयोग करता हूं और यह बहुत अच्छा है: http://pivotal.github.com/robolectric/। कोई एमुलेटर नहीं, कोई अलग परीक्षण प्रोजेक्ट नहीं है ... और मैं टीडीडी कर सकता हूं, जल्दी से तेज़ कर सकता हूं। –