《Android 应用测试指南》——第2章,第2.6节测试执行
本节书摘来自异步社区《Android 应用测试指南》一书中的第2章,第2.6节测试执行,作者 【阿根廷】Diego Torres Milano(迭戈 D.),更多章节内容可以访问云栖社区“异步社区”公众号查看
2.6 测试执行
执行测试用例的方法有很多种,我们这里一个个地分析。
另外,我们在前面的章节中提到的注释,可以让测试用例按照组或者种类执行,这种方式要按实际需求来执行。
2.6.1 在Eclipse里执行所有的测试用例
如果你采用了Elicpse作为开发环境,从Eclipse中执行测试用例可能是最简便的方式了。这种方式会执行包中所有的用例。
选择测试工程,然后单击 Run As -> Andriod Junit Test。
如果没有找到合适的设备或者模拟器,那么会自动启动一个。然后,测试用例开始执行,最后执行的结果会在Eclipse中的DDMS中展示出来。这个窗口需要手工打开,如图2.6所示。
图2.6 Eclipse中DDMS展示测试用例的执行结果
从Eclipse DDMS窗口的LogCat视图中,你可以看到更加详尽的执行过程信息和结果,如图2.7所示。
图2.7 DDMS中的logCat视图
2.6.2 执行单个测试用例
你可以选择执行单个测试用例,在测试过程中经常会遇到这种需求。选择测试工程,然后单击 执行1——执行设置选项。
然后,创建一个新的测试配置,配置如表2.5所示。
表2.5 测试配置
当你像往常一样执行测试用例的时候,只有这个用例会被执行。这种情况下,我们只执行了一个用例,执行后的结果跟之前发的截屏类似。
在Eclipse编辑器中,还有另一种快捷方式可以执行单个用例。选中你的函数名,然后按Shift+Alt+XT组合键,或者右键,然后选择Run as-Junit Test。
2.6.3 在模拟器里执行用例
模拟器默认的系统里面安装了开发工具,提供一些手动工具和设置。在这些工具中,我们可以找到一个特别长的列表,如图2.8所示。
现在我们研究下设备,因为需要利用设备来执行测试用例。上述的应用列表展示了AndriodManifest.xml中instrumentation标签下定义的所有包。默认情况下,会展示默认设备的配置,也就是andriod.test.InstrumentationTestRunner里面的默认配置。在这个文件里,如果有两个以上的包配置,那么识别到底用哪套配置就成问题了。为了解决这个问题,你可以手工添加一个选项,在设备标签下,如图2.9所示。
图2.8 工具列表
一旦设置成功,设备配置列表将会重新展示,我们的包将会在新标签下面显示,在执行之前,选择好就可以了,如图2.10所示。
如果测试用例按照这种方式执行,那么你就可以通过LogCat来看执行结果。
图2.10 新标签
你可以看到,如果你不设置可选标签,那所有设备都会在默认的标签andriod.test.InstrumentationTestRunner下面展示出来,这点之前也提到过。
2.6.4 用命令行来执行测试用例
最后,我们还可以从命令行来执行测试用例。如果你想自动化或者用脚本来控制测试,命令行很有用。
我们用 am instrument 命令来执行测试用例(严格地说是 am 命令和instrument子命令),这个命令能够唤起设备、指定包名,还有其他功能选项。
你可能在想,am是什么?am是Activity Manager的缩写,它是Android系统内部的一个主要部件。在系统启动的时候,系统服务将会唤起这个行为管理器。行为管理器负责管理所有的行为以及行为的生命周期。另外,我们可以看到,它要负责行为设备的控制。
am instrument 命令行的一般用法如框2.2中所示。
框2.2 am instrument命令用法
am instrument [flags] < COMPONENT> -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT) -e < NAME> < VALUE>: set argument < NAME> to < VALUE> -p < FILE>: write profiling data to < FILE> -w: wait for instrumentation to finish before returning
下面的表2.6中总结了最常用的选项。
表2.6 am命令常用选项
等待设备结束后退出。通常在命令行中使用,虽然不是一定要这样写,但是在手工执行时,如果不这样写,执行完用例后看不到测试结果
要触发am命令,我们使用adb shell命令或者你打开模拟器,你可以直接在shell命令窗口执行am命令。
2.6.5 执行所有测试用例
除了性能测试用例,下面的命令行将会执行所有的测试用例,如框2.3所示。
框2.3 测试用例执行结果
diego@bruce:\~$ adb shell am instrument -w com.example.aatg. myfirstproject.test/android.test.InstrumentationTestRunner com.example.aatg.myfirstproject.test.MyFirstProjectTests: Failure in testSomething: junit.framework.AssertionFailedError: Not implemented yet at com.example.aatg.myfirstproject.test.MyFirstProjectTests.testSomethi ng(MyFirstProjectTests.java:22) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRu nner.java:430) at android.app.Instrumentation$InstrumentationThread. run(Instrumentation.java:1447) Test results for InstrumentationTestRunner=.F Time: 0.2 FAILURES!!! Tests run: 1, Failures: 1, Errors: 0
2.6.6 执行一个特殊测试用例文件中的所有用例
为了执行某个具体的测试文件中所有测试用例,你可以用下面的命令,如框2.4中所示。
框2.4 Shell命令:执行特殊用例文件的所有用例
diego@bruce:\~$ adb shell am instrument -w -e class com.example.aatg. myfirstproject.test.MyFirstProjectTests com.example.aatg.myfirstproject. test/android.test.InstrumentationTestRunner
2.6.7 通过用例名称来执行用例
另外,我们可以选择具体哪个测试用例要在命令行下执行,如框2.5中所示。
框2.5 Shell命令:执行单个用例**
diego@bruce:\~$ adb shell am instrument -w -e class com.example.aatg. myfirstproject.test.MyFirstProjectTests\#testSomething com.example.aatg. myfirstproject.test/android.test.InstrumentationTestRunner
这种方式只能执行不带参数的构造函数的测试文件,这就是我们需要在命令行上加测试方法名的原因。
2.6.8 按用例分类来执行用例
我们前面提到了,测试用例可以被分为不同的种类,利用注释(测试注释)来标明它属于哪个种类。在执行命令的时候,可以通过下面的选项来指定执行某个种类下所有测试用例,选项详情如表2.7所示。
表2.7 用例执行方式选项
在我们举的例子中,将测试用例testSomething()标记为@SmallTest。这个测试用例就属于Small这类了。因此,在按照测试集合规模的大小来执行用例时,这个用例将和所有标记为SmallTest的用例一起执行。
框2.6所示的命令行将会执行所有带@SmallTest标记的测试用例。
框2.6 执行带SmallTest标记的命令
diego@bruce:\~$ adb shell am instrument -w -e size small com.example. aatg.myfirstproject.test/android.test.InstrumentationTestRunner
2.6.9 创建个性化标签
为了满足客户有另外的需求,比如说,有更大的测试集合需要标记,现有的尺寸标识不了。大家可以创建一个自己的个性标签,然后按命令行的方式具体定义。
比如,我想把一些非常重要的测试用例放在一起,于是我们可以创建一个叫做@VeryImportantTest的标签,如框2.7中所示。
框2.7 新建VeryImportantTest标签
package com.example.aatg.myfirstproject.test; /** * Annotation for very important tests. * * @author diego * */ public @interface VeryImportantTest { }
接下来,我们将创建另一个测试用例,并标记为@VeryImportantTest,如框2.8所示。
框2.8 新建测试用例,打新标签**
@VeryImportantTest public void testOtherStuff() { fail("Not implemented yet"); }
因此,像我们上面提到的,我们可以在am instrument命令行中执行带有这个标签的测试用例如框2.9所示。
框2.9 am instrument命令执行新标签下的用例
diego@bruce:\~$ adb shell am instrument -w -e annotation VeryImportantTest \ com.example.aatg.myfirstproject.test/android.test. InstrumentationTestRunner
2.6.10 执行性能测试
我们将在第9章“性能测试”中复习一下性能测试的细节,这里我们会介绍下am instrument命令中的一些选择项。
你需要在命令行中添加下面的选项,才能将性能测试用例添加在执行中,如表2.8所示。
表2.8 性能测试用例命令选项
2.6.11 空载测试
有时候你只是想知道测试用例是否能够跑起来,而不是真正想做测试。这时候你可以将下面的选项加到你的命令行中,如表2.9中所示。
表2.9 显示测试用例命令选项
这种方式在你写脚本或者编译的时候很有用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《iOS 6核心开发手册(第4版)》——1.11节秘诀:检测圆形
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第1章,第1.11节 秘诀:检测圆形,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.11 秘诀:检测圆形iOS 6核心开发手册(第4版)在像iOS这样的直接操作界面中,可以想象大多数人只通过指向屏幕上的项目来工作。然而,圆形检测仍然是被请求次数最多的姿势之一。开发人员喜欢使人们利用他们的手指圈出屏幕上的项目。在提供读者请求的解决方案的精神指导下,秘诀1-10提供了一个相对简单的圆形检测器,如图1-5所示。 图1-5 圆点和外面的椭圆显示了检测的圆形的关键特性 在这个实现中,检测器使用一个包含多个步骤的测试。时间测试检查笔画没有停顿。圆形姿势应该快速绘制出来。还有一个折拐测试,用于检查触摸没有太频繁地改变方向。正确的圆形的起点和终点必须足够接近,使得点之间以某种方式相关。同时还需要相当大的回旋余地,因为当没有提供直接的可视化反馈时,用户倾向于未达到或超过他们开始的位置。这里使用的像素距离,接近视图大小的1/3。 最后一个测试查看围绕中心点的移动。它把经过的弧度相加起来,在完美的圆...
- 下一篇
《CCNP TSHOOT 300-135认证考试指南》——第2章 故障检测与排除及网络维护工具
本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第2章 故障检测与排除及网络维护工具,作者 【加】Raymond Lacoste , 【美】Kevin Wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 故障检测与排除及网络维护工具CCNP TSHOOT 300-135认证考试指南本章主要讨论以下主题。 故障检测与排除及网络维护工具箱:本节将介绍故障检测与排除和网络维护任务的必备工具。利用Cisco IOS验证和定义故障问题:本节将回顾ping、Telnet以及traceroute等工具。利用Cisco IOS收集信息:本节将描述利用CLI为故障检测与排除及网络维护工作收集信息的方式。在传输过程中收集信息:本节将解释配置交换机向使用SPAN和RSPAN的抓包设备发送帧拷贝的配置方式。利用CLI工具记录网络信息:本节将解释记录网络结构图所需的步骤及相关命令。信息收集是一种持续不断的操作过程,网络出现故障问题时收集信息当然毫无疑问,但是如果仅仅在网络出现问题时才去收集网络信息,那么将会错失很多保障故障检测与排除过程效率与效果的关键信...
相关文章
文章评论
共有0条评论来说两句吧...