2012-07-24 14 views
8

मैंने robolectric का उपयोग करके कुछ परीक्षण लिखे हैं और अब मैं कुछ वास्तविक परीक्षण कक्षाएं करना चाहता हूं।रोबोलेक्ट्रिक (एंड्रॉइड): परीक्षण की घटनाएं?

एक मैं नोटिस है कि मैं onCreate तरह की घटनाओं परीक्षण नहीं कर सकते, आदि

क्या घटनाओं के परीक्षण के लिए मानक अभ्यास है ...

मैं अंदर निकालने चाहिए कोड thats onLocationChanged घटनाओं और उन्हें एक विधि में रखें, घटना विधि को बुलाएगी और रोबोलेक्ट्रो भी विधि को कॉल कर सकता है, बेशक विधि को सार्वजनिक होने की आवश्यकता होगी, है ना?

अगर मैं अपनी विधि के भीतर कुछ परीक्षण करना चाहता हूं जो आम तौर पर एक निजी चर है तो मुझे सार्वजनिक गेटर जोड़ने की ज़रूरत होगी, है ना? तो मैं इसे robolectric से देख सकते हैं?

क्या रोबॉलेक्ट्रिक में डेटा का खुलासा करने का कोई बेहतर तरीका है?

अग्रिम धन्यवाद।

+0

क्या आपने इसे हल किया है? यदि ऐसा है, तो कृपया एक उत्तर चुनें। –

उत्तर

7

क्रेट पर परीक्षण करते समय, मुझे क्रिएटिव पर कॉल करने के लिए रोबोलेक्ट्रिक मिलता है और फिर परीक्षण करें कि क्रिएटिव के बाद गतिविधि सही स्थिति में है। यहाँ एक उदाहरण है:

@RunWith(RoboTestRunner.class) 
public class DashboardActivityTest { 

    private DashboardActivity activity; 

    @Before 
    public void setUp() throws Exception { 
     activity = new DashboardActivity(); 
    } 

    @After 
    public void tearDown() throws Exception { 
    } 

    @Test 
    public void testDashboardHasButtons() { 
     activity.onCreate(null); 
     Button btn1= (Button) activity.findViewById(R.id.btn1); 
     assertNotNull(btn1); 
     Button btn2= (Button) activity.findViewById(R.id.btn2); 
     assertNotNull(btn2); 
    } 
} 

परीक्षण निजी तरीकों आमतौर पर दर्शाता है कि आपके डिजाइन सुधार किया जा सकता है और एक Robolectric विशिष्ट समस्या नहीं है।

चर्चा के बहुत सारे के लिए इस सवाल का देखें:

MyActivity testActivity = new MyActivity(); 
testActivity.onCreate(null); 

अब उचित तरीके से इस का उपयोग करने के लिए है: How do I test a class that has private methods, fields or inner classes?

6

Robolectric की v2 के रूप में, यह उचित तरीके से अब गतिविधियों शुरू करने के लिए नहीं है :

MyActivity testActivity = Robolectric.buildActivity(MyActivity.class).create().get(); 

यह आपको क्रेते पर कॉल करने के बाद गतिविधि का एक उदाहरण देगा।
यदि आप ऑनस्टार्ट, ऑनर्यूज़, ऑन पॉज़ इत्यादि का परीक्षण करना चाहते हैं, तो यह वही तरीका है, बस और अधिक तरीकों से।

MyActivity testActivity = Robolectric.buildActivity(MyActivity.class).create().start().resume().pause().stop().destroy().get(); 

(जोड़ सकते हैं या गतिविधि आप चाहते हैं की सटीक उदाहरण परीक्षण करने के लिए कोड के ऊपर लाइन में तरीकों निकालने के लिए)

बस Robolectric की वास्तव में नई अच्छा सुविधा को स्पष्ट करना चाहता था।

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