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

Uba*_*hat 6 java stubbing zxing android-espresso

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

  1. 用户单击扫描按钮
  2. onClick 启动了 ZXing 应用程序
  3. 如果返回正确的二维码,我们继续,否则用户可以选择手动输入二维码

我想用浓缩咖啡测试这个流程。我想我必须使用意图或意图1,但我不确定如何检查意图是否为 ZXing 以及如何返回应用程序。

vau*_*oid 3

使用 espresso-intents 的一般流程是这样的:

  1. 致电intending(X).respondWith(Y)以设置模拟。
  2. 执行应导致发送意图的操作。
  3. 调用intended(Z)以验证模拟是否收到了预期的意图。

X和Z可以相同,但我倾向于使X尽可能概括(例如仅匹配组件名称),并使Z更具体(检查附加值等)。

例如对于 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
Run Code Online (Sandbox Code Playgroud)