Cts问题之备份问题(测试案例:CtsShortcutHostTestCases)

不积跬步无以至千里

前边已经说了关于cts单项测试的流程,接下来说一下我遇到的这个关于系统备份功能的测试出现的bug。

简单说下解CTS的小体会:

1、先查看这个cts的bug是哪个测试案例的问题,如下面,我这个是CtsShortcutHostTestCases项测试的一个bug

2、然后查找CTS的测试代码,目录在android下,你必须知道它怎么测试的?测试逻辑才能知道它怎么导致你的系统出错的。

3、其实你可以的话,要进行单项测试一下,观察一下这一项到底是什么?有的测试项还是有测试现象的,这样更直观些。

4、前边你已经对你这个测试项有所了解,你就需要通过报错信息或者代码逻辑去查看一下到底调用的是哪个api进行测试的,然后进行改善、解决bug。

我其中遇到的是CtsShortcutHostTestCases测试中其中的android.content.pm.cts.shortcuthost.ShortcutManagerBackupTest#testBackupAndRestore_withNoUninstalltestBackupAndRestore的问题会出现的的错误为:

根据他的报错得知其想要的结果为:Backup finished with result:Success,但是返回的结果为Running backup for 1 requested packages。(其实这个说法其实从代码逻辑看出来的,前边是期望的结果,后边是返回的结果,但并非所有cts测试都是这样的形式)

然后发现其中的报错其实在这个地方,如下截图:


其中是调用了adb的shell bmgr命令去操作BackupManagerService.java 来实现的备份、恢复等功能。

如此文章的操作URL:http://blog.csdn.net/wangkaiblog/article/details/9491993 。

第一种解决方案:

为什么给你上边的网址?目的是你可以通过adb shell 操作bmgr命令,看查看是否自身的系统这个功能是否正常。

我这里发现我的不正常,不能正常的使用,其中的如果你操作成功就会如下图:

其中最后会出现processed这个文件夹。

我这里没成功的原因是没有把google的gsm功能未放到android/vendor目录下,这里有个app功能就是来实现备份功能:

因此我把google文件夹加上并把它在device下的msm8909.mk文件加上:$(call inherit-product-if-exists, vendor/google/products/gms.mk) 来实现引用。

其实得知上边说google这个gsm包是当cts认证过了以后才能加上这个包,因此这个解决方案只能完成功能,并不能当做cts的备份的解决方案

第二种解决方案:

根据cts的log可以看出,如下图:


因此,查看代码出现在这里的代码逻辑上(BackupManagerService.java)中:


因此可以看出是因为!mTransportWhitelist.contains(svcName)这个判断条件不通过,因此去查看mTransportWhitelist的由来逻辑代码:


因此,需要查看SystemConfig是怎么获取的这个白名单列表,如下(SystemConfig.java):


因此是在这里会添加到白名单里,因此通过查找他需要在这里配置一个paltform.xml中:

这样就能通过上边的那个条件了,建议采用第二种方案。

这样这个功能就完善了。^_^


猜你喜欢

转载自blog.csdn.net/wdyshowtime/article/details/79035224
今日推荐