Android Instrumentation HOME按钮

Mar*_*cek 4 instrumentation android robotium android-testing android-instrumentation

任何想法为什么将HOME键发送到在Instrumentation下运行的应用程序什么都不做?

import android.app.Instrumentation;
import android.view.KeyEvent;

public class MyInstrumentation extends Instrumentation {

  public void sendKeys() {
    // Works reliably
    this.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

    // Does nothing, nothing is printed to logcat
    this.sendKeyDownUpSync(KeyEvent.KEYCODE_HOME);
  }
}
Run Code Online (Sandbox Code Playgroud)

使用Robotium时以及直接使用Instrumentation时也是如此.模拟器和非root设备上的行为相同.

Pau*_*ris 10

主页按钮在仪器中不起作用,即使这样做也会使您处于不太有利的位置.Android Instrumentation只能检测自己的进程,这意味着一旦发送它就无法返回到您的应用程序,并且可能更糟糕的是稍微不确定,因为如果感觉如此,Android将能够关闭您的进程这会导致你的测试结束.

虽然这对你来说没什么用处吗?我怀疑你正试图测试与活动生命周期有关的事情,这可以在这里看到.这可以通过仪器进行测试,但不能以您希望的方式进行测试.如果您查看检测类的API文档(此处),您将看到callActivityXXX(活动活动)形式的许多有用方法,其中XXX与您要执行的生命周期事件匹配.

使用这些方法比我怀疑你喜欢的家庭重新启动要硬得多,但它允许你将测试分解到较低的水平,以确保你的应用程序在每个阶段做正确的事情,这将使其更加健壮随着时间的推移(比如测试它将其状态保存在暂停并在onResume上再次正确加载).

使用检测进行测试的下一个最简单的方法取决于您是否使用模拟器,如果只是在模拟器上运行,您可以使用方向命令:

solo.setActivityOrientation(Solo.LANDSCAPE);
solo.setActivityOrientation(Solo.PORTRAINT);
Run Code Online (Sandbox Code Playgroud)

这将导致您的活动被销毁并恢复测试活动生命周期的一些但不是所有状态.