【CTS】几个serialno失败项

【问题结论】
[Common]SN配置项的问题,只可以‘数字与大小写字母’
将配置SN改为字母数字组合,测试全部pass
【问题描述】
CTS三条失败项

run cts -m CtsTelephonyTestCases -t android.telephony.cts.TelephonyManagerTest#testGetDeviceId
run cts -m CtsTelephonyTestCases -t android.telephony.cts.TelephonyManagerTest#testGetDeviceIdForSlot
run cts -m CtsUsbTests -t com.android.cts.usb.TestUsbTest#testUsbSerialReadOnDeviceMatches

问题日志:

06-10 15:29:58 I/ConsoleReporter: [1/1 armeabi-v7a CtsUsbTests xxx_xxx_111_00000111] com.android.cts.usb.TestUsbTest#testUsbSerialReadOnDeviceMatches fail: junit.framework.ComparisonFailure: usb serial != adb serial expected:<[]> but was:<[xxx_xxx_111_00000111]>
    at junit.framework.Assert.assertEquals(Assert.java:100)
    at junit.framework.TestCase.assertEquals(TestCase.java:261)
    at com.android.cts.usb.TestUsbTest.testUsbSerialReadOnDeviceMatches(TestUsbTest.java:162)

【问题分析】

  • 源码追溯
cts / master / . / hostsidetests / usb / src / com / android / cts / usb / TestUsbTest.java
/**
     * Check if adb serial number, USB serial number, ro.serialno, and android.os.Build.SERIAL
     * all matches and meets the format requirement [a-zA-Z0-9]{6,20}
     */
public void testInstantAppsCannotReadSerial() throws Exception {
......
        CommandResult result = RunUtil.getDefault().runTimedCmd(5000, "lsusb", "-v");//这一句是在linux测试机执行shell命令"lsusb -v"
......
        String lsusbOutput = result.getStdout();
        Pattern pattern = Pattern.compile("^\\s+iSerial\\s+\\d+\\s+([a-zA-Z0-9]{6,20})",Pattern.MULTILINE);//在上句命令的返回值中匹配,看serilnumber是不是合法即“只能由字母数字组成,且6≤lenth≤20”
        Matcher matcher = pattern.matcher(lsusbOutput);
        String usbSerial = "";
        while (matcher.find()) {
            String currentSerial = matcher.group(1).toLowerCase();
            if (adbSerial.compareTo(currentSerial) == 0) {
                usbSerial = currentSerial;
                break;
            }
        }
        assertEquals("usb serial != adb serial" , usbSerial, adbSerial);//由于我们的serialno是带下划线了,所以匹配为空,就抛异常了
  • 实验
    在理清源码测试逻辑后,我们将SN配置项修改为“无下划线”的字母数字组合
    实验结果:三条均pass

转载于:https://www.cnblogs.com/houser0323/p/10999106.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机 模拟器 的状态 .还可以进行以下的操作:   1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;   2、在设备上运行shell命令;   3、管理设备或手机模拟器上的预定端口;   4、在设备或手机模拟器上复制或粘贴文件;   以下为一些常用的操作:   1、安装 应用到模拟器:   adb install   比较遗憾的是,Android并没有提供一个卸载 应用的命令,只能自己手动删除 :   adb shell   cd /data/app   rm app.apk   2、进入设备或模拟器的shell:   adb shell   通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:   adb shell [command]   如:adb shell dmesg会打印出内核的调试信息.   3、发布端口:   可以设置任意的端口号,做为主机 向模拟器或设备的请求端口.如:   adb forward tcp:5555 tcp:8000   4、复制文件 :   可向一个设备或从一个设备中复制文件,   复制一个文件或目录到设备或模拟器上:   adb push   如:adb push test.txt /tmp/test.txt   从设备或模拟器上复制一个文件或目录:   adb pull   如:adb pull /addroid/lib/libwebcore.so .   5、搜索模拟器/设备的实例:   取得当前运行的模拟器/设备的实例的列表及每个实例的状态:   adb devices   6、查看bug报告:   adb bugreport   7、记录无线通讯日志:   一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:   adb shell   logcat -b radio   8、获取设备的ID和序列号:   adb get-product   adb get-serialno   9、访问数据库SQLite3   adb shell   sqlite3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值