ViewActions.click()和仅执行view.performClick()的自定义ViewAction有什么区别?

时间:2018-09-09 09:09:25

标签: android android-espresso

Espresso中的内置ViewActions.click()在引擎盖下使用GeneralClickAction来模拟click事件,它执行许多逻辑,例如计算坐标。

我的问题是,它与以下实现有何不同?

public class MyClickViewAction {

  public static ViewAction click() {
    return new ViewAction() {
      @Override
      public void perform(UiController uiController, View v) {
          v.performClick();
          uiController.loopMainThreadUntilIdle();
      }
    };
  }
}

1 个答案:

答案 0 :(得分:0)

您的v.performClick();将触发代码流,您的点击监听器将被调用。 但是ViewActions.click()就像用户按下您的视图一样。视图将接收onTouch事件,然后接收其视图作业,以将那些触摸事件转换为点击事件并将其传播到您的clickListener。

如果您的视图具有针对用户触摸的自定义反馈机制,或者它可以在用户触摸时缩放,而在触摸时缩放,则可以使用Espresso进行测试。