मॉकिटो प्रॉक्सी उदाहरण बनाता है जब कुछ चीज पर जासूसी होती है। अब, क्या उन प्रॉंटर को आगे बढ़ाने का कोई तरीका है जिसे उस प्रॉक्सी इंस्टेंस पर निष्पादित किया गया है जो वास्तविक उदाहरण के लिए है जो इसके पीछे बैठता है?किसी गतिविधि पर ठीक से जासूसी कैसे करें
तर्क: मेरे पास एक ऑब्जेक्ट उदाहरण है कि मेरे पास पूरी तरह से मेरे नियंत्रण में नहीं है, यानी एक एंड्रॉइड गतिविधि है। मैं अपने ऐप के अधिकांश हिस्सों को प्रॉक्सी संस्करण दे सकता हूं और लेकिन जैसा कि ठीक है, क्योंकि मुझे गतिविधि के निर्माण चरण के दौरान बहुत जल्दी जासूस/प्रॉक्सी बनाने की आवश्यकता है, यह अभी तक पूरी तरह से तत्काल नहीं है, उदाहरण के लिए आधार संदर्भ संलग्न नहीं है। यह प्रॉक्सी इंस्टेंस पर होता है और निश्चित रूप से गतिविधि उदाहरण द्वारा उपयोग नहीं किया जाता है (जो Activity.this
के माध्यम से स्वयं को संदर्भित करता है)। अंत परिणाम यह है कि इससे सभी प्रकार की दुर्घटनाएं होती हैं क्योंकि इस आधार संदर्भ के माध्यम से संसाधन समाधान होता है, इसलिए आंतरिक फ्रैगमेंट मशीनरी एनपीई और अधिक फेंकता है। - किसी भी विचार
public class CustomAndroidJUnitRunner extends AndroidJUnitRunner {
@Override
public Activity newActivity(ClassLoader cl, String className, Intent intent)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Activity activity = super.newActivity(cl, className, intent);
return maybeStubSomeDelegate(activity);
}
private Activity maybeStubSomeDelegate(Activity activity) {
if (!(activity instanceof SomeDelegate)) {
return activity;
}
Activity spiedActivity = spy(activity);
doReturn(SomeDelegateMock.getInstance())
.when((SomeDelegate) spiedActivity)
.getDelegate();
return spiedActivity;
}
}
मैं पता कर रहा हूँ:
यहाँ कुछ कोड है?
आप एस्प्रेसो क्यों उपयोग नहीं करते हैं: https://google.github.io/android-testing-support-library/docs/espresso/ तो तुम गतिविधि भी नियंत्रित कर सकते हैं। –
मैं पहले से ही एस्प्रेसो का उपयोग कर रहा हूं, इसका मेरे प्रश्न से कोई लेना देना नहीं है। –
प्रश्न के बाहर आपकी गतिविधि के लिए एक @VisibleForTesting setDelegate() विधि जोड़ रहा है? मुझे लगता है कि गतिविधि के जासूसों को इंजेक्शन देने वाले किसी भी दृष्टिकोण में हमेशा कुछ बढ़त का मामला होगा जहां यह काम नहीं करेगा। – jdonmoyer