2011-02-18 12 views
6

मैं ActivityInstrumentationTestCase2 को विस्तारित एंड्रॉइड ऐप के लिए टेस्टकेस लिख रहा हूं। परीक्षण वर्ग इस तरह दिखता है:एंड्रॉइड टेस्ट क्लास ग्रहण में संकलित करने में विफल रहता है "बाध्य मिस्चैच" त्रुटि

public class SolutionEntryActivityTest extends ActivityInstrumentationTestCase2<SolutionEntryActivity> { 

    public SolutionEntryActivityTest() { 

     super(SolutionEntryActivity.class); 
    } 
} 

ग्रहण में, इस कोड त्रुटि के साथ संकलित करने के लिए विफल रहता है: Bound mismatch: The type SolutionEntryActivity is not a valid substitute for the bounded parameter <T extends Activity> of the type ActivityInstrumentationTestCase2<T>

लेकिन SolutionEntryActivity वास्तव में एक android.app.Activity है, प्रकार पदानुक्रम इस तरह है:

Activity 
    OrmLiteBaseActivity<H> (abstract) 
     KabowieActivity 
      PracticeActivity (abstract) 
       SolutionEntryActivity 

मुझे 2004 और 2005 से दो ग्रहण कीड़े मिलीं जो एक समान समस्या से निपटने लगती हैं लेकिन इन्हें लंबे समय तक तय किया जाना चाहिए।

मैं एंड्रॉइड 2.2 और सन जावा 1.6 के साथ एक्लिप्स हेलीओस का उपयोग कर रहा हूं।

कोई विचार क्या चल रहा है?

उत्तर

5

समस्या यह थी कि जब आप एंड्रॉइड ग्रहण परियोजना के साथ एक परीक्षण प्रोजेक्ट बनाते हैं, तो बाहरी पुस्तकालयों में प्रोजेक्ट-टू-टेस्ट से संदर्भों का संदर्भ स्वचालित रूप से हल नहीं होता है। कक्षा OrmLiteBaseActivity (मूल प्रश्न में टाइप पदानुक्रम देखें) परीक्षण के तहत परियोजना के निर्माण पथ में शामिल बाहरी जार से आता है। उस बाहरी जार को भी टेस्ट प्रोजेक्ट के निर्माण पथ में स्पष्ट रूप से शामिल करने की आवश्यकता है। सुनिश्चित नहीं है कि इसे एक बग माना जा सकता है और यदि ऐसा है, तो कहां। लेकिन मैं उम्मीद करता हूं कि मूल परियोजना द्वारा उपयोग की जाने वाली सभी पुस्तकालयों को भी परीक्षण परियोजना में उपलब्ध होना चाहिए। वैसे भी, उन लोगों के लिए धन्यवाद जो प्रश्न पढ़ते हैं।

संपादित सुधार: buildpath के लिए एक ही पुस्तकालय (testproject को परीक्षण के अंतर्गत परियोजना से एक के लिए एक बार, और एक बार) दो बार जोड़ने काम नहीं करता क्योंकि JUnit नहीं समझती कि दोनों वास्तव में एक ही पुस्तकालय हैं । संकलन सफल होगा लेकिन LogCat एक त्रुटि संदेश देगा जिसमें कहा गया है कि SolutionEntryActivity के सुपरक्लास विभिन्न स्रोतों से हैं। यहां समाधान मूल प्रोजेक्ट से बाहरी libs को निर्यात करना है (बिल्डपैथ कॉन्फ़िगर करें -> ऑर्डर और निर्यात -> निर्यात किए जाने के लिए libs का चयन करें) उन्हें सीधे परीक्षण प्रोजेक्ट के बिल्डपैथ में जोड़ने के बजाय।

संबंधित मुद्दे

 संबंधित मुद्दे