6

मैं जानता हूँ कि यह चारों ओर ढेर सारे प्रश्न देखते हैं, लेकिन मैं मुझे :(मदद करने के लिए कुछ भी नहीं मिल सकता हैएंड्रॉयड: एस्प्रेसो टुकड़ा या गतिविधि तक इंतजार नहीं करता है तो दिखाया गया है कि हर परीक्षण विफल

मैं का उपयोग करने की कोशिश की एक एंड्रॉइड ऐप के लिए यूआई-टेस्ट जेनरेट करने के लिए एस्प्रेसो। निर्भरता मुद्दों को मारने के बाद (क्योंकि कुछ पुस्तकालयों को अन्य पुस्तकालयों से निर्भरता के रूप में विभिन्न संस्करणों में दो बार शामिल किया गया है) मैं अभी भी कामकाजी परीक्षण नहीं कर पा रहा हूं ...

I IdlingResource के बारे में पता है, लेकिन जैसा कि मैंने पढ़ा है, एस्प्रेसो मुख्य थ्रेड तक बॉक्स से बाहर निकलता है और AsyncTaskPool किसी भी परीक्षण को चलाने से पहले निष्क्रिय है।

इसके संपर्क में आने के लिए मैंने एक सरल ऐप को दो गतिविधियां, एक स्प्लैशस्क्रीन और मुख्य प्रतिक्रिया प्रदान की। splashscreen MainActivity

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    finish(); 
    Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
    startActivity(intent); 
    } 
}, 3000); 

शुरू कर मैं भी इस के लिए AsyncTask का उपयोग करने की कोशिश की लेकिन कुछ भी सही ढंग से काम करने के लिए, क्योंकि हर परीक्षण में विफल रहता है लगता है से पहले तीन सेकंड के लिए इंतजार कर के लिए कुछ इस तरह होता है।

परीक्षण केवल जांच करता है कि एक TextView एक परिभाषित पाठ वाले से देखने पर दिखाया जाता है:

onView(withText("DummyText")).check(matches(notNullValue())); 

मैंने सोचा कि यह एक साधारण परीक्षण बनाने के लिए है कि मुश्किल नहीं होगा ...

क्योंकि मुझे api> = 16 के खिलाफ परीक्षण करना है मुझे एस्प्रेसो की आवश्यकता है। बस मेरे लिए मैंने uiAutomator (मुझे पता है कि यह api> = 18 के लिए है) का उपयोग करके इसे चेक किया गया है, लेकिन कुछ स्मार्ट दिखाने के लिए यह देखने के लिए स्मार्ट तर्क है ..... और यह पूरी तरह से काम करता है ...

उत्तर

5

क्या है आपकी गतिविधि नियम? क्योंकि यदि यह स्प्लैशस्क्रीन एक्टिविटी है, तो परीक्षण तुरंत शुरू हो जाएगा और दृश्य दृश्यमान स्क्रीन पर नहीं होने पर ऑनव्यू विफल हो जाएगा। उस दृश्य का परीक्षण करने के लिए सीधे मुख्य गतिविधि खोलने का प्रयास करें। मैं कुछ समय के लिए एस्प्रेसो का उपयोग कर रहा हूं और मुझे पता है कि @Test विधियां तब शुरू होती हैं जब गतिविधिTestRule के रूप में परिभाषित गतिविधि लोड हो गई है।

आशा है कि इससे मदद मिलेगी।

शुभकामनाएं!

+2

आपकी सलाह के लिए धन्यवाद! मैं काम कर रहा यह मिल गया के बाद मैं 'गलत' के रूप में शासन के तीसरे पैरामीटर की घोषणा की: '@Rule सार्वजनिक ActivityTestRule mMainActivity = नए ActivityTestRule <> (SplascreenActivity.class, सच है, झूठी);' ऐसा करने से, मैं व्यवहार जैसे परिभाषित कर सकता हूं । 'doNothing() जब (mDeviceService) .getDevices();' और फिर 'mSplashscreenActivity.launchActivity (शून्य) का उपयोग करके गतिविधि मैन्युअल रूप से प्रारंभ;'। मैंने _AandynTask_ के साथ _Handler_ भी बदल दिया है और परीक्षण कार्य को अपेक्षित कंटेनंग प्रतीक्षा, जांच आदि के रूप में जान लिया है ..... – grumpyshoe

+1

वास्तव में कमाल! बहुत बढ़िया! – sunlover3

+0

@grumpyshoe मुझे भी एक ही समस्या का सामना करना पड़ रहा है, मेरे आवेदन में हमारे पास एक स्पलैश स्क्रीन है जो स्वचालित रूप से लॉगिन स्क्रीन पर उपयोगकर्ता नेविगेट करती है लेकिन मेरा परीक्षण लॉगिन पर नेविगेट करने और उपयोगकर्ता नाम इनपुट संपादन टेक्स्ट की खोज शुरू करने की प्रतीक्षा नहीं करता है। क्या आप मेरी मदद कर सकते हैं। – Krishnakant

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