2015-11-27 14 views
6

के साथ टेस्ट एंड्रॉइड गतिविधि मैं JUnit4 और ActivityTestRule के साथ एक गतिविधि का परीक्षण करने का एक तरीका ढूंढ रहा हूं, लेकिन एक अलग एप्लिकेशन क्लास (उदा। मॉक या विरासत) के साथ। मैनिफेस्ट विलय और टूल्स का उपयोग करके लाइब्रेरी प्रोजेक्ट्स के लिए इसे प्राप्त करने में सक्षम था: androidTest/AndroidManifest.xml में एप्लिकेशन टैग पर = "android: name" को प्रतिस्थापित करें। हालांकि यह अनुप्रयोगों के लिए काम नहीं करता है।विभिन्न अनुप्रयोग वर्ग

कोई विचार यह कैसे किया जा सकता है?

उत्तर

16

आप अपने खुद के धावक के साथ AndroidJUnitRunner उपclass कर सकते हैं और अपने कस्टम एप्लिकेशन वर्ग के साथ newApplication() ओवरराइड कर सकते हैं।

public class CustomTestRunner extends AndroidJUnitRunner { 

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return super.newApplication(cl, CustomTestApplication.class.getName(), context); 
} 
} 

इस तरह नई धावक के साथ अपने build.gradle अपडेट करना सुनिश्चित करें: testInstrumentationRunner "com.mypackage.name.path.CustomTestRunner":

testInstrumentationRunner "com.mypackage.name.path.CustomTestRunner"

+2

इस ओर इशारा करते हुए के लिए धन्यवाद। कई अन्य ट्यूटोरियल ऐसा करने में असफल रहे। –

+2

इसके अलावा, यदि आप एंड्रॉइड स्टूडियो से अपना परीक्षण चला रहे हैं, तो आपको अपने कस्टम/रीग्नर कॉन्फ़िगरेशन में इंगित करने के लिए अपने रन/डीबग कॉन्फ़िगरेशन में अपने 'विशिष्ट उपकरण रनर' को अपडेट करने की आवश्यकता हो सकती है। – Max

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