5.2 用命令行来启动虚拟设备
如果可以通过命令行来实现启动不同类型的虚拟设备那该多好啊,这样,我们就可以通过写脚本来自动化回归。
释放窗口中的虚拟设备,为我们自动化脚本打开了另一扇大门。
下面,让我们来看看门后面的世界。
5.2.1 Headless模拟器
无头模拟器,就是不显示交互窗口的模拟器。这种模拟器在自动化测试的时候很有用,因为我们在自动化测试的时候,没有人会盯着屏幕看,以及人机交互,因为自动化执行得都很快,想看也看不了。
当然,值得一提的是,如果你看不到屏幕,即使用例失败了,你可能还不知道原因,因此,我们在选择的时候,要根据具体场景需要,选择是否需要这种模拟器。
我们注意到一件事情,就是在运行AVD虚拟机的时候,通信端口在执行期间就已经分配好了,端口从5554开始,将最新实用的端口加2,就是当前分配的端口号。这个端口号可以用来标记模拟器,给模拟器命名,设置模拟器序列号,比如,模拟器用端口5554,那它的名字就是"模拟器-5554"。在我们用虚拟机模拟器的时候很有用,这样我们就不用关注分配的端口号是啥了,直接看名字就知道了。当然,在你同时启动多个模拟器,跑自动化程序的时候,就会造成一些困扰,较难跟踪了。
这种情况下,我们建议设置指定的端口号来通信,使得虚拟器在我们的掌控之中。
通常,如果我们在同一个时间点启用多个虚拟器来跑多个用例,除了不想看屏幕之外,还希望有输出。我们有下面这些选择项。
1.启动刚刚创建的虚拟机命令行如下:
$ emulator -avd test -no-window -no-audio -no-boot-anim -port 5580 &
2.端口必须是5554和5584之间的整数:
$ adb devices
List of devices attached
Emulator-5580 device
这样列出所有的设备列表。
3.下一步就是安装应用和测试工程:
$ adb -s emulator-5580 install\ TemperatureConverter/bin/TemperatureConverter.apk 347 KB/s (16632 bytes in 0.046s) pkg: /data/local/tmp/TemperatureConverter.apk Success $ adb -s emulator-5580 install\ TemperatureConverterTest/bin/TemperatureConverterTest.apk 222 KB/s (16632 bytes in 0.072s) pkg: /data/local/tmp/TemperatureConverterTest.apk Success |
4.然后,我们可以用具体的序列号来标记正在执行的测试用例:
$adb-semulator-5580shellaminstrument-w\ com.example.aatg.tc.test/android.test.InstrumentationTestRunner com.example.aatg.tc.test.EditNumberTests:...... com.example.aatg.tc.test. TemperatureConverterActivityTests:.......... com.example.aatg.tc.test.TemperatureConverterTests:.... TestresultsforInstrumentationTestRunner=.................... Time:25.295 OK(20tests) |
5.2.2 禁用锁屏功能
我们可以看到,这种情况下,测试用例执行起来,并没有中断让用户去输入什么东西。不过,有时候,如果我们用标准的方法,在Eclipse中启动标准的模拟器来执行测试用例,即使用例没有失败,也会报错。那是因为模拟器在第一个屏幕出现的时候就锁住了,我们需要将UI相关的屏幕解锁来执行用例。
解锁屏幕你可以用下面的命令:
$ adb -s emulator-5580 emu event send EV_KEY:KEY_MENU:1 EV_KEY:KEY_MENU:0
还有一种方式,就是在程序里面将锁屏禁用;但是呢,有点不好的就是需要在应用程序中插入测试的代码。因此,程序发布之前,需要将这段测试代码从应用程序中删除掉。
在此之前,需要在AndriodManifest.xml中加入下面这段准入代码,然后再在你的程序中加入禁止锁屏的代码。
Manifest配置加入下面元素,如框5.1所示。
框5.1 manifest配置
<manifest>
...
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
...
</manifest>
本文选自《Android应用测试指南》第五章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。