8

मैं UI परीक्षण फ्रेमवर्क (एस्प्रेसो) का उपयोग करके Android app with deep link cases के लिए परीक्षण लिखना चाहता हूं - केवल ACTION_VIEW इरादे का उपयोग करके लॉन्च ऐप और खुले स्क्रीन पर सभी दृश्यों की जांच करें।Android में गहरे लिंक के लिए परीक्षण कैसे लिखें?

लेकिन ऐसा लगता है कि एस्प्रेसो (यहां तक ​​कि एस्प्रेसो-इरादों) में यह कार्यक्षमता नहीं है, और गतिविधि वर्ग को परिभाषित करने की आवश्यकता है।

मैंने इस तरह से प्रयास किया, लेकिन यह ठीक से काम नहीं करता है, क्योंकि ऐप लॉन्च किया गया है - ऐप्पलचरचर एक्टिविटी (एस्प्रेसो द्वारा आवश्यक) का उपयोग करके मानक लॉन्च और गहरे लिंक के माध्यम से लॉन्च करें।

@RunWith(AndroidJUnit4.class) 
public class DeeplinkAppLauncherTest { 

    @Rule 
    public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<>(AppLauncherActivity.class); 

    @Test 
    public void testDeeplinkAfterScollDownAndBackUp() { 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("myapp://search/777")); 
     activityRule.launchActivity(intent); 

     onView(withId(R.id.search_panel)).check(matches(isDisplayed())); 
    } 

} 

मैं मानक लॉन्च के बिना केवल गहरे लिंक का उपयोग करके परीक्षण ऐप लॉन्च करना चाहता हूं। क्या आप जानते हैं, इसे कैसे करें?

+0

मैं पहले से ही सवाल का एक ही तरह का जवाब दिया यहाँ https: // stackoverflow.com/questions/44074173/automating-deep-linking-using-android-espresso/47813474#47813474। आशा करता हूँ की ये काम करेगा! –

उत्तर

4

शुरू करने से रोका जा सके मैं एक विकल्प मिल गया चाहिए - अस्तित्व में आशय के लिए हाल ही में जोड़े डीप लिंक खोलने मानकों और मानक गतिविधि लांच का उपयोग करें:

@Rule 
public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<AppLauncherActivity>(AppLauncherActivity.class){ 
    @Override protected Intent getActivityIntent() { 
     Intent intent = super.getActivityIntent(); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("myapp://search/777")); 
     return intent; 
    } 
}; 
2
@Rule 
public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<>(AppLauncherActivity.class, false, false); 

एक गतिविधि टेस्टरूल बनाने के लिए कई निर्माता हैं। तीसरा एक launchActivity है। ऊपर दिखाए गए अनुसार इसे झूठी पर सेट करें क्योंकि आप बाद में activityRule.launchActivity(intent) के साथ उस गतिविधि को मैन्युअल रूप से प्रारंभ करते हैं। यह इसे दो बार

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