2015-11-23 11 views
6

का उपयोग कर एमुलेटर स्क्रीन अनलॉक करें मैं अपना पहला एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं और मैं सीआई सर्वर स्थापित कर रहा था। मेरे एस्प्रेसो परीक्षण निम्नलिखितएस्प्रेसो

java.lang.RuntimeException के साथ अपने मशीन लेकिन ट्रैविस त्रुटियों पर ठीक चलाएँ: दृश्य पदानुक्रम की जड़ के लिए इंतजार कर रहे थे खिड़की ध्यान केंद्रित किया और नहीं 10 से अधिक सेकंड के लिए लेआउट का अनुरोध किया।

ऐसा लगता है कि मुझे परीक्षण चलाने से पहले मुझे एमुलेटर स्क्रीन अनलॉक करने की आवश्यकता है। ब्लॉक करता है, तो में लिपटे ऊपर कोड के साथ मेरी गतिविधियों कूड़े को

KeyguardManager mKeyGuardManager = (KeyguardManager) ctx.getSystemService(Context.KEYGUARD_SERVICE); 
KeyguardManager.KeyguardLock mLock = mKeyGuardManager.newKeyguardLock(name); 
mLock.disableKeyguard(); 

बात मैं नहीं करना चाहती है: ऐसा करने के लिए मैं एक प्रकट src/debug करने के लिए आवश्यक अनुमतियों के साथ जोड़ने के लिए और उसके बाद के साथ स्क्रीन को अनलॉक करने की है। क्या एस्प्रेसो टेस्ट से स्क्रीन अनलॉक करने का कोई तरीका है?

मेरे एस्प्रेसो परीक्षण:

@RunWith(AndroidJUnit4.class) 
public class EspressoSetupTest { 

    @Rule 
    public final ActivityTestRule<WelcomeActivity> activity = 
      new ActivityTestRule<>(WelcomeActivity.class, true, true); 

    @Test 
    public void launchTest() { 
     onView(withId(R.id.welcome_textView_hello)) 
       .perform(click()) 
       .check(matches(withText("RetroLambda is working"))); 
    } 
} 

उत्तर

5

आप setUp() विधि अपने एस्प्रेसो टेस्ट में की तरह उपयोग कर सकते हैं:

@UiThreadTest 
@Before 
public void setUp() throws Exception { 
    final Activity activity = mActivityRule.getActivity(); 
    mActivityRule.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      KeyguardManager mKG = (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE); 
      KeyguardManager.KeyguardLock mLock = mKG.newKeyguardLock(KEYGUARD_SERVICE); 
      mLock.disableKeyguard(); 

     //turn the screen on 
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
        | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
        | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 
      } 
     }); 
} 

src/डिबग/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" > 
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
</manifest> 
+0

मैं एस्प्रेसो सेटअप अलग है। मेरे पास संदर्भ तक पहुंच नहीं है, और नाम परिवर्तनीय क्या होना चाहिए? –

+0

मैंने इसे और अधिक स्पष्ट करने के लिए अपना उत्तर संपादित कर दिया है। आप सिस्टम सेवा प्राप्त करने के लिए गतिविधि का उपयोग कर सकते हैं। नाम चर सिर्फ एक टैग है, आप इस उद्देश्य के लिए स्थिर KEYGUARD_SERVICE स्ट्रिंग का उपयोग कर सकते हैं। – woley

+0

धन्यवाद! मेरी एस्प्रेसो टेस्ट क्लास वास्तव में कुछ भी subclassing नहीं है। मुझे ActivityTestRule.getActivity() का उपयोग करके गतिविधि का एक उदाहरण मिल रहा है और अपना कोड @Before setUp() विधि में डाल रहा है लेकिन यह काम नहीं करता है। –

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