2012-09-20 13 views
17

एक गतिविधि में साथ आशय शुरू कर दिया परीक्षण करने के लिए, मैं कुछ यादृच्छिक अतिरिक्त डेटा के साथ एक नया आशय शुरू कर दिया विफल रहा क्योंकि मेरे टेस्ट कोड में intent अतिरिक्त डेटा key नहीं है।robolectric का उपयोग कैसे करें अतिरिक्त डेटा

चूंकि key यादृच्छिक है, इसलिए एक ही कुंजी प्रदान करना मुश्किल है। तो मैं सिर्फ यह जांचना चाहता हूं कि इरादे का लक्ष्य वर्ग UserActivity है, लेकिन इसे करने का कोई तरीका नहीं मिला।

क्या कोई समाधान है?

उत्तर

22

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

तब आप अपनी गतिविधि को उस उद्देश्य को पकड़ सकते हैं जब परीक्षण में 'कुंजी' अपेक्षित परीक्षण मूल्य होता है।


हालांकि, आपके सवाल का सीधे जवाब देने के लिए ...

जब मैं अगर कोई लक्ष्य (एक बटन क्लिक करके इस मामले में) जनरेट किया गया था परीक्षण कर रहा हूँ और सही लक्ष्य मैं

उपयोग करने के लिए इशारा कर रही है
public static void assertButtonClickLaunchesActivity(Activity activity, Button btn, String targetActivityName) { 
    btn.performClick(); 
    ShadowActivity shadowActivity = shadowOf(activity); 
    Intent startedIntent = shadowActivity.getNextStartedActivity(); 
    ShadowIntent shadowIntent = shadowOf(startedIntent); 
    assertThat(shadowIntent.getComponent().getClassName(), equalTo(targetActivityName)); 
} 
+0

धन्यवाद, यह वास्तव में सहायक है! – Freewind

1

ऐसा कुछ?

Assert.assertTrue(UserActivity.class.equals(intent.getComponent().getClassName())); 

या assertEquals?

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