现在,基础框架里要做的事做完了,在runTest里根据测试类型找到对应测试接口,我们要做的是CTS测试,所以就回到CTS框架里CompatibilityTest了,附图理解:
6 CompatibilityTest
CompatibilityTest就是进行CTS测试的test组件(最为关键的组件),它实现了很多接口。
直接看run方法:
模块仓库初始化这块儿其实就是模块与设备的一个分发的地方,注意:是以设备为单位进行分发的,也就是对于i号设备,去初始化在它上面要运行哪些模块呢,而不是把所有模块拿来看A号模块分给哪个手机,B号模块分给哪个手机。
关于这个部分我专门写到下一篇博文吧。
initialize方法在ModuleRepo.java中,做的事是初始化所有的模块。
返回的getModules就是返回给该台设备(通过mShardIndex或者SN号指定)分配的运行测试的模块集合。
回到run(只挑部分截图):
while循环:
就是把一次测试过程中的所有测试模块依次取出执行
这里是具体执行的,可以看到调用的还是moduleDef的run方法:
这里就是对于cts测试的具体执行了,run方法还是会针对不同类型进行相应接口的调用(和之前runtests里的run方法调用不同接口的区别应该是那个地方还是在基础框架里,是CTS测试与其他诸如GTS测试等等测试的大类的层面,而这里已经是CTS测试了,应该是对于不同测试模块的一个更细致的划分)
注:
在cts v2中,和v1的最大区别是v1是通过框架把所有的每一条测试case都拿到,逐个去执行,而v2则是把每个测试module都作为一个configuration,框架做的就是去拿到测试的所有module,但是每个module的执行还是走了框架,因为每个module现在都被认为是一个configuration了,各个module之间都是独立的,并不需要像V1框架那样再需要一个xml文件去配置,需要plan文件去做一个集合。而只需要去逐个执行测试module即可。
好了,框架的研究就差不多这些了,关于V1,V2的区别可以看我一开始给了链接的那篇博文,说的更详细一些。
最后一篇我就单独拎出用例模块的组织。