Android Espresso测试

来源:互联网 发布:如何想象高维空间 知乎 编辑:程序博客网 时间:2024/05/16 06:49

一直不知道android的使用onView之类的测试较什么,所以查找andorid测试的时候只找到基础,后面终于知道这种叫Espersso测试。结合网上的参考,我认为有必要写篇文整理:

参考文章(最后一个是官方例子)

http://www.jianshu.com/p/22a09ae7b995
http://blog.csdn.net/qiang_xi/article/details/52933593
http://www.jianshu.com/p/00ab03f3d394
https://github.com/googlesamples/android-testing

首先,明确一下,测试分三步:初始化控件,操作控件,检查结果

初始化

初始化Activity

两步,定义规则(在哪一页)和初始化intent[该步骤在不需要intent传值时可省],注意,ActivityTestRule

public class MainActivityInstrumentationTest {    private static final String STRING_TO_BE_TYPED = "Peter";    @Rule    public ActivityTestRule<TestUnitActivity> mActivityRule = new ActivityTestRule<>(            TestUnitActivity.class);    @Test    public void sayHello(){        Intent intent = new Intent();        intent.putExtra("name","dyy");        mActivityRule.launchActivity(intent)    }}

初始化View

测试里面的View不叫View,叫ViewInteraction,获取方法(有很多种,因为一般操纵的view都有id,所以就用withId):

ViewInteraction view = onView(withId(R.id.my_view));

然后是操作控件:
view.perform([一些操作]);
常用操作,可用逗号分隔:
以下摘自:http://blog.csdn.net/qiang_xi/article/details/52933593
click():
返回一个点击action,Espresso利用这个方法执行一次点击操作,就和我们自己手动点击按钮一样,只不过Espresso把点击这个操作自动化了,下面的方法都是一样的道理,就不再赘述了.
clearText():
返回一个清除指定view中的文本action,在测试EditText时用的比较多
swipeLeft():
返回一个从右往左滑动的action,这个在测试ViewPager时特别有用
swipeRight():
返回一个从左往右滑动的action,这个在测试ViewPager时特别有用
swipeDown():
返回一个从上往下滑动的action
swipeUp():
返回一个从下往上滑动的action
closeSoftKeyboard():
返回一个关闭输入键盘的action
pressBack():
返回一个点击手机上返回键的action
doubleClick():
返回一个双击action
longClick():
返回一个长按action
scrollTo():
返回一个移动action
replaceText():
返回一个替换文本action
openLinkWithText():
返回一个打开指定链接action

一般的写法是:
onView(withId(R.id.xx)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard());
或者:
onView(withId(R.id.xx)).check(matches(withText(“xx”)));

就是获取控件的语句和perform连用或者check连用,一般是二选一,当然,连起来也可以:
onView(withId(R.id.xx)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()).check(matches(isDisplayed()));

以上,是许多网页都找的到的,等我把官方的研究完,再写个2