相同点:
- Robotium和Espresso都是基于Android Instrumentation框架;
不同点:
- Espresso是事件驱动,测试线程和UI线程安全的运行,不用做类似sleep操作;
- Espresso执行速度比Robotium快;
- Espresso语法简洁,可以配合hamcrast断言框架;
- instrumentation框架的局限性是不能跨进程,Espresso通过intented方法,可以mock被测进程,进一步扩展了局限性;
- 对于broadcast和service这些非UI线程的异步操作,Espresso提供IdlingResource接口,通过实现这个接口,来判断异步操作是否完成;
- 扩展控件支持,比如RecyclerView等;
- Google官方UI测试框架,下一个版本支持WebView;
常用api
//这个不是robotium的函数,用于文本校验
assertture(“校验的文本”,true)
//EditText文本输入
TypeText(String) - 一个个字输入
EnterText(String) - 一串数据输入
//等待页面中的文本
waitfortext(string,多少个相匹配,等待时间(毫秒))
waitfortext(id,多少个相匹配,等待时间(毫秒))
waitForActivity()
//查看页面中的文本
SearchText()
SearchButton()
SearchEditText()
waitfortext、searchtext可以获取toast message
//点击按钮
ClickOnText(String)
ClickOnButton(String)
ClickOnCheckBox
ClickOnRadioButton
ClickInList(第几行)
ClickOnView(GetView(id)) - 点击页面中难找到的控件
ClickOnImage(index) - 点击页面中图片按钮,如账号中的“X”按钮
//清除控件中的文本
ClearEditText
//滚动
ScroolDown - 向下滚动屏幕
scrollListtoline(index,多少行) - 向下滚动列表框多少行
scrolltoside - 水平滚动屏幕
//屏幕控制
setActivityOrientation(Solo.LANDSCAPE或Solo.PORTRAIT) 控制屏幕横向或纵向显示
//跳转
goBack() 模仿硬返回键
goBackToActivity(“Activity名”) 跳到指定的Activity
//截屏
takescreenshot
示例
@Rule
public ActivityTestRule<LoginActivity> mActivityTestRule = new ActivityTestRule<>(LoginActivity.class);
protected Solo solo;
@Before
public void setUp() throws Exception {
solo = new Solo(InstrumentationRegistry.getInstrumentation(),
mActivityTestRule.getActivity());
}
@After
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}