Android Instrumentation 主页按钮

标签 android robotium instrumentation 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);
  }
}

这在使用Robotium时是一样的以及使用 Instrumentation 时直接地。该行为在模拟器和非根设备上是相同的。

最佳答案

home 键在 instrumentation 中不起作用,即使它起作用也会让你处于一个不太有利的位置。 Android Instrumentation 只能检测它自己的进程,这意味着一旦它被发送出去,您将无法返回到您的应用程序,并且可能更糟糕的是它具有轻微的不确定性,因为如果 Android 感觉如此,它可以关闭您的进程这会导致您的测试结束。

虽然这对您没有多大用处,是吗?我怀疑您正在尝试测试与可以看到的 Activity 生命周期有关的事情 here .这可以通过仪器进行测试,但不能以您希望的简单方式进行测试。如果您查看检测类 (here) 的 API 文档,您会看到大量以 callActivityXXX(Activity activity) 形式存在的有用方法,其中 XXX 与您要执行的生命周期事件匹配。

使用这些方法比在主页重新启动要困难一些,我想您会喜欢,但它允许您将测试分解到较低级别,以确保您的应用程序在每个阶段都做正确的事情,这将使随着时间的推移它会变得更加健壮(比如测试它在 onPause 时保存其状态并在 onResume 时再次正确加载它)。

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

solo.setActivityOrientation(Solo.LANDSCAPE);
solo.setActivityOrientation(Solo.PORTRAINT);

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

关于Android Instrumentation 主页按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25184160/

相关文章:

java - 按位置直接从 RecyclerView 访问 ViewHolder

android - 在android中绘制自定义形状

java - 没有找到测试

java - 代理初始化异常: Agent JAR loaded but agent failed to initialize - trying to inject JAR file

java - 错误: Could not find method SubmitRegister(View) in a parent or ancestor Context for android:onClick attribute defined on view class

android - 在 Android 4 中设置对话框宽度

android - 测试 Android 应用程序 : Exception during suite construction

android - Robotium 和 ActionBarSherlock

android - 如何验证 robotium 中的 View 或布局

c# - 将我的 Web 应用程序从 .Net 3.5 升级到 .Net4.0 后,出现安全透明规则失败