2012-11-01 32 views
1

當我在Android模擬器中運行以下測試時,輸入值不會顯示在EditText中。爲什麼不呢?我需要改變什麼才能看到模擬器中的輸入? (測試通過,所以最後,它可能並不重要我只是想能夠看到它實際上是在模擬器中發生。)爲什麼我的測試在Android模擬器中不使用sendKeys()動畫?

public void testOkButtonOnClickWithUserInputNumber() throws Throwable { 
    this.sendKeys(Integer.toString(this.testNumber)); // 123 

    this.runTestOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      Assert.assertTrue(NumberFilterTest.this.okButton.performClick()); 
     } 
    }); 

    this.getInstrumentation().waitForIdle(new Runnable() { 
     @Override 
     public void run() { 
      Assert.assertTrue(NumberFilterTest.this.activity.isFinishing()); 
     } 
    }); 
} 

回答

3

退房官方開發指南 - Activity Testing

1確保觸摸模式被關閉:

控制仿真器或與你從你的測試發送重要事件的設備,你必須關閉觸摸模式。如果你不這樣做,關鍵事件將被忽略。

ActivityInstrumentationTestCase2.setActivityTouchMode(false); 

2確保屏幕解鎖:

您可能會發現,如果模擬器或設備的主屏幕與鍵盤鎖模式禁用了UI測試不起作用。這是因爲被測應用程序無法接收sendKeys()發送的關鍵事件。

mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
mLock = mKeyGuardManager.newKeyguardLock("activity_classname"); 
mLock.disableKeyguard(); 
+1

還要注意的SendKeys()不準在UI線程上運行,所以一定要確保你沒有調用它的應用程序的UI線程。 – yorkw

相關問題