首页 文章 精选 留言 我的

精选列表

搜索[文档处理],共10000篇文章
优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html 功能性测试包括模拟用户操作之类的组件验证。例如开发者可以通过功能性测试来验证在用户执行了UI操作之后Activity是否启动了Activity。 如要为Activity创建功能性测试,测试类应当继承ActivityInstrumentationTestCase2。与ActivityUnitTestCase不同,ActivityInstrumentationTestCase2既可以与Android系统通信,又能使程序可以接收键盘输入事件与屏幕点击事件。 验证功能行为 一般功能性测试可能会有以下测试目的: 验证在某个UI控制器被按下后,目标Activity是否被启动。 验证目标Activity是否将在启动之前的用户输入数据正确显示。 开发者所实现的代码可能如下: @MediumTest public void testSendMessageToReceiverActivity() { final Button sendToReceiverButton = (Button) mSenderActivity.findViewById(R.id.send_message_button); final EditText senderMessageEditText = (EditText) mSenderActivity.findViewById(R.id.message_input_edit_text); // Set up an ActivityMonitor ... // Send string input value ... // Validate that ReceiverActivity is started ... // Validate that ReceiverActivity has the correct data ... // Remove the ActivityMonitor ... } 测试框架会等待ReceiverActivity启动,否则的话将会在超时后返回null。如果ReceiverActivity启动,那么ActivityMonitor则会收到一个命中。开发者可以通过断言方法来验证ReceiverActivity是否被启动,命中数是否会如所期望的那样有所增长。 设置ActivityMonitor 如果需要监视Activity,可以注册ActivityMonitor。当目标Activity启动时,系统会通知ActivityMonitor一个事件。如果目标Activity启动,那么ActivityMonitor的计数器则会更新。 一般使用ActivityMonitor应当执行以下步骤: 1.通过getInstrumentation()方法获得用于测试的Instrumentation实例。 2.通过Instrumentation的addMonitor()重载方法将Instrumentation.ActivityMonitor的实例添加到当前的instrumentation中,具体的匹配规则可由IntentFilter或者类名指定。 3.等待被监视的Activity启动。 4.验证监视器的数字增长。 5.移除监视器。 例如: // Set up an ActivityMonitor ActivityMonitor receiverActivityMonitor = getInstrumentation().addMonitor(ReceiverActivity.class.getName(), null, false); // Validate that ReceiverActivity is started TouchUtils.clickView(this, sendToReceiverButton); ReceiverActivity receiverActivity = (ReceiverActivity) receiverActivityMonitor.waitForActivityWithTimeout(TIMEOUT_IN_MS); assertNotNull("ReceiverActivity is null", receiverActivity); assertEquals("Monitor for ReceiverActivity has not been called", 1, receiverActivityMonitor.getHits()); assertEquals("Activity is of wrong type", ReceiverActivity.class, receiverActivity.getClass()); // Remove the ActivityMonitor getInstrumentation().removeMonitor(receiverActivityMonitor); 使用Instrumentation发送键盘事件 如果Activity含有EditText,可能需要测试用户是否可以对其输入数据。 一般来说,要发送字符串到EditText,应当: 1.在runOnMainSync()方法中运行requestFocus()同步方法,这样会使UI线程一直等待接收焦点。 2.调用waitForIdleSync()方法使主线程变为空闲状态。 3.通过sendStringSync()方法发送一条字符串给EditText。 例如: // Send string input value getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { senderMessageEditText.requestFocus(); } }); getInstrumentation().waitForIdleSync(); getInstrumentation().sendStringSync("Hello Android!"); getInstrumentation().waitForIdleSync();

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册