繁体   English   中英

如何在 Espresso 测试中调用自定义视图上的方法?

[英]How to call a method on a custom view in an Espresso test?

我有一个自定义视图,我需要在该视图上调用特定方法来打开活动。 在 Espresso 测试中执行此操作的正确方法是什么? 我只需要膨胀这个视图还是需要编写一个自定义的ViewAction

你可以像这样创建一个自定义的 ViewAction

public class MyCustomViewAction implements ViewAction{

    @Override
    public Matcher<View> getConstraints(){
        return isAssignableFrom(YourCustomView.class);
    }


    @Override
    public String getDescription(){
        return "whatever";
    }

    @Override
    public void perform(UiController uiController, View view){
        YourCustomView yourCustomView = (YourCustomView) view;
        yourCustomView.yourCustomMethod();
        // tadaaa
    }

}

并像往常一样使用它,例如

onView(withId(whatever)).perform(new MyCustomViewAction());

为了在断言中使用自定义方法的结果,我想出了以下对 lellomans 答案的修改:

public class MyCustomViewAction implements ViewAction{
    MyReturnObject returnValue = null;

    @Override
    public Matcher<View> getConstraints(){
        return isAssignableFrom(YourCustomView.class);
    }


    @Override
    public String getDescription(){
        return "whatever";
    }

    @Override
    public void perform(UiController uiController, View view){
        YourCustomView yourCustomView = (YourCustomView) view;
        // store the returnValue   
        returnValue = yourCustomView.yourCustomMethod();
    }   
}

我没有创建新的 MyCustomViewAction(),而是创建了一个 myAction 对象以供以后重用。

MyCustomViewAction myAction = new MyCustomViewAction();
onView(withId(whatever)).perform(myAction);
MyReturnObject returnValueForSpecialAssertions = myAction.returnValue;
// assert something with returnValueForSpecialAssertions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM