为什么使用sendKeys()的测试在Android模拟器中没有动画效果?

时间:2012-11-01 00:14:25

标签: android unit-testing android-emulator junit

当我在Android模拟器中运行以下测试时,输入值不会显示在EditText中。为什么不呢?我需要更改什么才能在模拟器中看到输入? (测试通过,所以最后,它可能没关系。我只是希望能够看到它实际发生在模拟器中。)

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());
        }
    });
}

1 个答案:

答案 0 :(得分:3)

查看官方开发指南 - Activity Testing

1确保触控模式已关闭:

  

要控制模拟器或具有您从测试发送的键事件的设备,您必须关闭触摸模式。如果不这样做,则忽略关键事件。

 ActivityInstrumentationTestCase2.setActivityTouchMode(false);

2确保屏幕已解锁:

  

如果使用键盘锁模式禁用了模拟器或设备的主屏幕,您可能会发现UI测试不起作用。这是因为受测试的应用程序无法接收sendKeys()发送的关键事件。

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