2016-05-08 3 views
6

मैं एंड्रॉइड टेस्ट में ActivityTestRule'sbeforeActivityLaunched() विधि कैसे सुनूं।एंड्रॉइड गतिविधि को सुनने के लिए कैसे करें एंड्रॉइड परीक्षण एंड्रॉइड टेस्ट

मेरा कामकाज एक कस्टम गतिविधि टेस्टरूल बना रहा है और निर्माता पर कॉलबैक प्रदान कर रहा है। क्या यह एक बुरा अभ्यास है? ActivityTestRule कन्स्ट्रक्टर विधि के लिए सुनना ठीक है।

@Rule public CustomActivityTestRule<MainActivity> mainActivityActivityTestRule = new 
      CustomActivityTestRule<MainActivity>(MainActivity.class, new CustomActivityTestRule.onBeforeListener() { 
     @Override 
     public void onBefore(String message) { 
      //do something before activity starts 
     } 
    }); 

ही जिस तरह से यह JUnit नियम instantiating पर कुछ करने के लिए सक्षम है:

public class CustomActivityTestRule<A extends Activity> extends ActivityTestRule<A> { 

    public interface onBeforeListener{ 
     void onBefore(String message); 
    } 

    private onBeforeListener listener; 

    public CustomActivityTestRule(Class<A> activityClass, onBeforeListener listener) { 
     super(activityClass); 
    } 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
     listener.onBefore("before activity launch"); 
    } 
} 

एंड्रॉयड परीक्षण वर्ग में मैं की तरह कुछ कर सकते हैं,:

यहाँ मेरी कोड है। क्या जूनिट टेस्ट नियम को तुरंत चालू करने का कोई और तरीका है?

उत्तर

5

आप एक नई कक्षा के निर्माण के बिना beforeActivityLaunched ओवरराइड कर सकते हैं।

मैं उपयोग कर रहा हूँ मेरी परीक्षणों में निम्नलिखित:

@Rule 
public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class) { 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
    } 

}; 
2

आप परीक्षण नियम कॉन्फ़िगर कर सकते हैं, तो यह आपके गतिविधि स्वचालित रूप से शुरू नहीं करता है।

@Rule 
public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class, false, false); 

आप सेटअप विधि में आप सभी आप क्या जरूरत है तैयार कर सकते हैं और उसके बाद गतिविधि का शुभारंभ।

activityTestRule.launchActivity(null); 

भी देखें

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