Android移动应用开发 第14章 Android性能分析与测试

上传人:知** 文档编号:293587441 上传时间:2022-05-17 格式:PPTX 页数:54 大小:1.06MB
返回 下载 相关 举报
Android移动应用开发 第14章 Android性能分析与测试_第1页
第1页 / 共54页
Android移动应用开发 第14章 Android性能分析与测试_第2页
第2页 / 共54页
Android移动应用开发 第14章 Android性能分析与测试_第3页
第3页 / 共54页
Android移动应用开发 第14章 Android性能分析与测试_第4页
第4页 / 共54页
Android移动应用开发 第14章 Android性能分析与测试_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《Android移动应用开发 第14章 Android性能分析与测试》由会员分享,可在线阅读,更多相关《Android移动应用开发 第14章 Android性能分析与测试(54页珍藏版)》请在金锄头文库上搜索。

1、第14章 测试App2022/5/16152022/5/16Android Studio测试环境单元测试目录目录CONTENT12自动化UI测试组件测试34参考教材参考教材: :AndroidAndroid应用开发项目化教程应用开发项目化教程Android Studio测试环境p项目中的测试u新建的Android项目,自动生成如下测试包landroidTestp是Android Instrumentation Tests的文件夹p运行在Android设备上ltestp是Unit Tests的文件夹p运行在JVM上(不会访问Android框架层的API)1Android Studio测试环境p项

2、目中的测试u新建的Android项目,自动生成如下测试包landroidTestltest1Android Studio测试环境p项目中的测试u新建的Android项目,自动生成如下测试包1Android Studio测试环境p项目中的测试uapp/build.gradleltestInstrumentationRunner 把AndroidJUnitRunner 设置成默认的testInstrumentationRunnerlandroidTestCompile把Espresso作为UI自动化测试ltestCompile把JUnit4作为单元测试框架1单元测试p本地单元测试u配置测试环境l目

3、录pmodule-name/src/test/javal依赖2单元测试p本地单元测试u创建本地测试类lJUnit4特点p不必继承junit.framework.TestCase类p也不用在测试方法的前面加上test关键字p也不用任何junit.framework 或 junit.extensions 包里的类p测试方法必须以Test注解为开头2单元测试p本地单元测试u创建本地测试类2单元测试p本地单元测试uMock Android 依赖l步骤1.在build.gradle 文件中引入Mockito库的依赖。2.在开始定义单元测试类之前,添加RunWith(MockitoJUnitRunner.

4、class)的注解。这个注解告诉Mockito测试运行器,对该框架的使用是正确的,同时可以简化mock对象的初始化。3.为了对有Android 依赖的工程创建一个mock对象,在字段的定义前面,添加Mock注解4.为了对依赖的表现进行打桩,可以声明一个条件当该条件满足的时候返回指定的值,通过调用when() 和 thenReturn()方法。2单元测试p本地单元测试uMock Android 依赖2单元测试p本地单元测试u运行本地单元测试l步骤1.在工程窗口中,右键工程同时同步工程。2.在工程窗口中,定位到单元测试类或者方法,然后右键它选择运行。运行单元测试目录下的所有测试,在目录上右键同时选

5、择运行测试。2单元测试pInstrumented单元测试u设置测试环境l目录pmodule-name/src/androidTests/javal依赖2单元测试pInstrumented单元测试u创建一个Instrumented单元测试类l要求pinstrumented单元测试类应该被写为一个JUnit4测试类。p在开始定义测试类前添加注解: RunWith(AndroidJUnit4.class)。p需要具体声明Android Testing Support Library提供的AndroidJUnitRunner类作为默认测试运行器。2单元测试pInstrumented单元测试u创建一个I

6、nstrumented单元测试类l示例2单元测试pInstrumented单元测试u创建一个测试套装l特点p一个测试套装被包含在一个测试包中,和主应用的包相似。通常,测试套装包的名字一般以.suite扩展名结尾p为单元测试创建测试套装时,导入JUnit RunWith 和 Suite 类p添加 RunWith(Suite.class) 和Suite.SuitClasses() 注解。p在Suite.SuiteClasses() 注解中,列出独立的测试类或者测试套装作为参数。2单元测试pInstrumented单元测试u创建一个测试套装l示例2单元测试pInstrumented单元测试u运行In

7、strumented单元测试l在工程窗口,定位到instrumented测试类或者方法,接着右键和运行它使用Android 测试配置。l为了运行所有的在instrumented测试目录里的测试,在该目录上右键然后选择运行测试。2自动化UI测试p单个App的UI测试uEspressolAndroid Testing Support Library提供的Espresso测试框架,提供了编写UI测试的Api,用来模拟和单个目标App的交互。l使用Espresso的一个关键好处是它提供了自动的同步测试动作。lEspresso可以监测主线程什么时候是空闲的,所以可以在合适的时间运行测试命令,来提高测试的

8、可靠性。lEspresso测试框架基于instrumentation Api并且依靠AndroidJUnitRunner测试器来工作的。3自动化UI测试p单个App的UI测试u设置Espressol注意,关闭一下动画p窗口缩放动画p过渡缩放动画p动画程序时长缩放3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l规则p寻找一个想测试的Activity的UI组件,通过调用onView()方法,或者 onData()方法来为AdapterView的控制。p模 拟 和 UI组 件 之 间 的 用 户 交 互 , 比 如 调 用 ViewInteraction.perform()

9、或 者 DataInteraction.perform()方法,同时将用户的具体动作传入。为了让UI组件的多个操作按照顺序执行,使用逗号分隔符在方法参数里将他们串联起来。p按需重复上述动作,来模拟用户和目标App的多个Activity进行交互。p使用ViewAssertions方法来检查在进行了上述一系列的用户交互后,UI是否有正确的状态或者是表现。3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l示例3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l和ActivityTestRule一起使用p通过使用ActivityTestRule,测试框架加载正

10、在测试中的App的Activity,在每个被Test、Before注解的方法之前,框架负责在测试完成后关闭这个Activity和调用所有被After注解的方法来运行。3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l和ActivityTestRule一起使用p示例3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l和ActivityInstrumentationTestCase2一起使用p在测试类中注入一个Instrumentation实例p调 用 injectInstrumentation()方 法 同 时 将 InstrumentationRegi

11、stry .getInstrumentation()的结果作为参数传递3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l和ActivityInstrumentationTestCase2一起使用p示例3自动化UI测试p单个App的UI测试u创建一个Espresso测试类l获取UI组件p在Espresso和App交互之前,必须首先具体声明对应的UI组件或者View。pEspresso支持使用Hamcrest matchers来具体声明App中的Views 和 Adapters.p调用onView()方法同时传递一个view匹配器,他具体声明了目标view。onView()方

12、法返回一个ViewInteraction对象,它允许测试和目标View之间的交互。3自动化UI测试p单个App的UI测试u执行ActionslViewActions提供的动作pViewActions.click(): 对一个View的点击。pViewActions.typeText(): 点击一个View 然后输入特定的字符串。pViewActions.scrollTo(): 滚动至指定的View。pViewActions.pressKey(): 执行一个按键操作,按照给定的KeyCodepViewActions.clearText(): 清除目标View的Text3自动化UI测试p单个App

13、的UI测试u验证结果l调用 ViewInteraction.check() 或者 DataInteraction.check() 方法来断言目标View的反馈是否和预期状态相匹配。lViewAssertions提供的方法pdoesNotExist:断言在当前的View层级中没有符合标准的View相匹配。pmatches: 断言指定的View在当前View层级中存在同时他的状态和给定的Hamcrest匹配器相匹配。pselectedDescendentsMatch : 断言指定的父View的子View存在,并且他们的状态和给定的Hamcrest 匹配器相匹配。3自动化UI测试p单个App的UI测

14、试u验证结果l示例3自动化UI测试p跨越多个App进行UI测试u设置 UI Automatorl添加依赖库3自动化UI测试p跨越多个App进行UI测试u设置 UI AutomatorlUiautomatorviewerpUiautomatorviewer工具提供了方便的视觉界面来检查布局层级和查看UI组件的属性,他们在设备的前台是可见的。借助这些信息可以使用UI Automator创建更细腻的测试。3自动化UI测试p跨越多个App进行UI测试u设置 UI Automatorl流程p加载一个目标APP到物理设备上。p将该设备连接到开发机器上p打开一个终端然后定位到/tools/目录下。p用命令运

15、行该工具 $ uiautomatorviewer3自动化UI测试p跨越多个App进行UI测试u设置 UI Automatorl查看应用的UI的特性p在 uiautomatorviewer界面,点击 设备截屏 按钮。p通过uiautomatorviewrtool悬浮在左面板的快照可以概览UI组件定义。该组件的特性被列在右面板下方,布局层级在右面版的上方。p选择性的点击 Toggle NAF 节点按钮,来查看那些不会被UI Automator 获取的UI组件,不过只能获取这些组件的有限信息。3自动化UI测试p跨越多个App进行UI测试u确保Activity可获得lActivity中实现以下最基本的

16、优化来支持UI automatorp使 用 android:contentDescription属 性 来 给 ImageButton 、 ImageView、CheckBox加标签和其他的用户界面控制组件。p给EditText提供一个android:hint属性来代替内容描述。p将android:hint属性和任何的图形icon结合起来给用户提供反馈(比如,状态信息)p使用uiautomatorviewer工具类确保UI组件可以被测试框架获取到。也可以测试应用程序通过打开获取服务像TalkBack 然后通过触摸来浏览,然后尝试着仅在一个方向上使用应用。3自动化UI测试p跨越多个App进行UI测试u创建一个UI Automator测试类l规则p获取UiDevice对象来访问想测试的设备,通过调用getInstance()方法然后传递一个Instrumentation对象参数进入p通过调用 findObject()方法,获取一个UIObject对象来访问在设备上展示的UI组件。p通 过 调 用 UiObject的 方 法 来 模 拟 一 个 具 体 的 和 UI组 件 之 间 的 交 互

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号