Espresso check 自定义验证控件

684 阅读1分钟

Espresso 提供的验证方式只是最基础的,是否可见、焦点是否获取、是否能点击等。因此验证控件的一些特殊属性(tag 红点、控件显示颜色、背景图等)就需要自定义ViewAssertion了。

验证的方式很灵活要根据业务代码变化而变化。

假如 一个登录textView 设置的backgroundcolor如下:

我们查看setBackgroundColor 源码发现,他把颜色封装成了ColorDrawble,给了textView 的mBackground 属性:

自定view check 可以获取TextView 对象,理论上获取textView mBackGround ,对比mBackground 中的color int 值就可以了,如下打算:

但是mBackGround 属性是私有属性,color 值 是Colordrawble中的属性不能直接通过textView获取,一般就卡在mBackGround 的获取这里,无法再进一步了。

别担心,我们还有反射可用,把mBackGround 直接给他反射出来,获取color int 如下:

以上只是一种示例(就是意思意思的意思,并没有实际运行用例),主要是展示自定义check 验证控件属性的方法,实际使用一定要根据业务代码的设置方式,去找到属性,并验证。

还有一些难找的子控件可以通过找到唯一特征的父布局,向下遍历,验证他或唯一特征的兄弟控件等;

其中变化无穷也。