Espresso和UIAutomator
来源:互联网 发布:配音秀软件 编辑:程序博客网 时间:2024/05/17 00:57
Espresso和UIAutomator - 完美的结合
本篇文章翻译自Espresso & UIAutomator - the perfect tandem
Espresso是个功能强大、执行速度很快的Android自动化测试框架,但是它有一个重要的局限-你只可以在被测App的Context中操作。
意味着下列App自动化测试需求无法实现:
- 应用的推送消息
- 同步联系人
- 从另一个应用程序进入被测App
因为你要处理移动设备的其他应用程序,比如通知栏、联系人等。
事实上,UIAutomator 2.0发布后可以实现上述功能。如Android Developers blog post所说“最重要的是,UIAutomator现在已经基于Android Instrumentation...”,因此,使用Instrumentation test runner既可以运行UIAutomator,也可以运行Espresso。
另外,我们可以将UIAutomator和Espresso测试结合起来,可以更加得心应手的处理被测应用和电话之间的交互。
下面的例子,我将解释如何使用这种方法来自动化测试App的联系人同步功能。
import android.support.test.InstrumentationRegistry;import android.support.test.rule.ActivityTestRule;import android.support.test.runner.AndroidJUnit4;import android.support.test.uiautomator.UiDevice;import android.support.test.uiautomator.UiObject;import android.support.test.uiautomator.UiSelector;@RunWith(AndroidJUnit4.class)public class TestContactsSync { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule(LoginActivity.class); UiDevice mDevice; String PEOPLE_APP = "People"; String MY_APP = "XING"; String userContactName = "Android Tester"; @Before public void setUp() throws Exception{ super.setUp(); mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); } @Test public void testContactsSync() throws Exception { // Espresso code: login the user, navigate to contact sync and enable clicking on toggle logInUser(); onView(withText(R.string.sync_button)).perform(click()); onView(withId(R.id.contacts_sync_enable_toggle)).perform(click()); // UIAutomator code: navigate to People app mDevice.pressHome(); UiObject conutactsApp = mDevice.findObject(new UiSelector().text(PEOPLE_APP)); conutactsApp.clickAndWaitForNewWindow(); // UIAutomator code: check that contact is present in it after sync was triggered UiObject contactName = mDevice.findObject(new UiSelector().text(userContactName)); assertTrue(contactName.exists()); // UIAutomator code: navigate back to my app under testm Device.pressHome(); UiObject myApp = mDevice.findObject(new UiSelector().text(MY_APP)); myApp.clickAndWaitForNewWindow(); // Espresso code: turn off contact sync and logout onView(withId(R.id.contacts_sync_enable_toggle)).perform(click()); onView(withId(R.id.logout)).perform(click()); } @After public void tearDown() throws Exception { super.tearDown(); }}
是不是很完美?UIAutomator需要Android 4.3(API Level 18)及更高版本。稍微修改下build.gradle
文件即可-添加productFlavors
和声明uiautomator依赖。
productFlavors { // The actual application flavor production { minSdkVersion 14 } // Test application flavor for uiautomatior tests test { minSdkVersion 18 }}dependencies { // Instrumentation tests androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.1' androidTestCompile 'com.android.support.test:rules:0.2' // Set this dependency to build and run UI Automator tests androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.0.0'}
祝你好运:)
阅读全文
0 0
- UiAutomator和Espresso比较
- Espresso和UIAutomator
- Espresso和UIAutomator - 完美的结合
- Android自动化测试Espresso+UIAutomator故障总结
- Espresso
- uiautomator介绍和使用
- uiautomator介绍和使用
- uiautomator介绍和使用
- 可靠的功能测试--Espresso和Dagger2
- uiautomator
- uiautomator
- uiautomator
- UIAutomator
- Uiautomator
- Uiautomator2和Uiautomator的区别
- 【学习笔记】系列十二:Google Espresso和Robolectric配置实例
- 实战自动化测试Espresso和Ui automator(一)
- 实战自动化测试Espresso和Ui automator(二)
- 也谈OpenStack中的虚拟机HA
- <canvas>+JS如何实现可拖拽并且显示百分比的环形进度条
- 圆形图片切换效果
- new、delete
- highcharts gauge 速度 仪表盘动态创建动态改变指针
- Espresso和UIAutomator
- linux下编写tcp客户端学习笔记
- 在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** *********
- MC9S12G128 SCI设置
- native关键字
- [js高手之路] es6系列教程
- spring cloud 的启动Eureka client报错--Cannot execute request on any known server
- 【noip2017 day2T2】【蚯蚓】巧用队列单调性线性处理
- offer38-找数字在有序数组中出现的次数