我对Android上的Espresso相当陌生,遇到了以下问题:我希望Espresso对按钮执行longclick(或其他操作。),同时按住按钮,我想检查状态不同的视图。
用(或多或少)伪代码:
onView(withId(button_id)).perform(pressButtonDown());
onView(withId(textBox_id)).check(matches(withText("Button is pressed")));
onView(withId(button_id)).perform(releaseButton());
Run Code Online (Sandbox Code Playgroud)
我尝试使用MotionEvents.sendDown()和.sendUp()编写2个自定义Taps,即PRESS和RELEASE,但没有使其工作。如果这是正确的道路,我可以张贴到目前为止的代码。
编辑:
public class PressViewActions
{
public static ViewAction pressDown(){
return new GeneralClickAction(HoldTap.DOWN, GeneralLocation.CENTER, Press.THUMB);
}
public static ViewAction release() {
return new GeneralClickAction(HoldTap.UP, GeneralLocation.CENTER, Press.THUMB);
}
}
Run Code Online (Sandbox Code Playgroud)
攻丝器的代码:
public enum HoldTap implements Tapper {
DOWN {
@Override
public Tapper.Status sendTap(UiController uiController, float[] coordinates, float[] precision)
{
checkNotNull(uiController);
checkNotNull(coordinates);
checkNotNull(precision);
DownResultHolder res = MotionEvents.sendDown(uiController, coordinates, precision);
ResultHolder.setController(uiController);
ResultHolder.setResult(res);
return Status.SUCCESS;
}
},
UP{
@Override
public Tapper.Status sendTap(UiController uiController, float[] coordinates, float[] precision)
{ …Run Code Online (Sandbox Code Playgroud)