Android Espresso测试中的存根/模拟意图

时间:2015-08-13 12:40:23

标签: java zxing android-espresso stubbing

我想在我的应用程序中测试以下流程:

  1. 用户点击扫描按钮
  2. onClick推出ZXing应用
  3. 如果返回了正确的qr代码,我们继续执行其他用户获取手动输入代码的选项
  4. 我想用浓缩咖啡来测试这个流程。我想我必须使用有意或有意1但我不知道如何检查意图是否是ZXing以及如何回到应用程序。

1 个答案:

答案 0 :(得分:2)

使用espresso-intents的一般流程如下:

  1. 致电intending(X).respondWith(Y)以设置模拟。
  2. 执行应导致意图发送的操作。
  3. 调用intended(Z)以验证模拟是否已收到预期的意图。
  4. X和Z可以是相同的,但我倾向于使X尽可能一般化(例如只匹配组件名称),并使Z更具体(检查额外值等)。

    e.g。对于ZXing,我可能会这样做(警告:我还没有测试过这段代码!):

    Intents.intending(hasAction("com.google.zxing.client.android.SCAN"); // Match any ZXing scan intent
    onView(withId(R.id.qr_scan_button).perform(click()); // I expect this to launch the ZXing QR scanner
    Intents.intended(Matchers.allOf(
            hasAction("com.google.zxing.client.android.SCAN"),
            hasExtra("SCAN_MODE", "QR_CODE_MODE"))); // Also matchs the specific extras I'm expecting