Robotium的左右为难 -- enterText

简介:

最近测试框架收到反馈,详查后发现了一个Robotium的问题,甚有趣,遂记录。

 

问题场景:

    Robotium.enterText输入数据后,点击"发送"按钮,多数情况下失败,少数时候成功。

    QQ图片20141127113057

 

 

问题分析:

    这个问题不需要深入的分析流程,直接看enterText源码便可发现大概问题:

复制代码
public void setEditText(final EditText editText, final String text) {
    if(editText != null){
        final String previousText = editText.getText().toString();

        inst.runOnMainSync(new Runnable()
        {
            public void run()
            {
                editText.setInputType(InputType.TYPE_NULL); // 设置input类型,不重要
                editText.performClick(); 
                dialogUtils.hideSoftKeyboard(editText, false, false);
                if(text.equals(""))
                    editText.setText(text);
                else{
                    editText.setText(previousText + text);
                    editText.setCursorVisible(false); // …为什么text.equals("")就不需要呢setCursorVisible(false)呢?这TM在玩我吧......算了这个也不重要...
                }
            }
        });
    }
}
复制代码

    重点是performClickhideSoftKeyboard

    1. 为什么Robotium要这么做呢?

        如果不这么做,editText.setText(msg)也成功。但这和真实操作不一致,真实流程是:点击editText,弹出键盘,输入文字,隐藏键盘。虽然这个流程短,但状态变化很大:

        (1)焦点发生变化,这可能会影响后续的检查/业务流程(触发事件之类…)。

        (2)弹出/隐藏键盘,这会触发Android从Touch模式变为键盘模式。另外弹出/隐藏键盘可能有监听事件,如不触发操作,监听事件不会执行。

    2. 为什么要在setText之前hideSoftKeyboard?

        如果performClick和hideSoftKeyboard是上面的原因,那么hideSoftKeyboard在setText之前/后都没所谓了,因为他压根不影响输入。

    3. 如果不执行hideSoftKeyboard会怎么样?

        (1)隐藏键盘的监听事件不执行。

        (2)Android将停留在键盘模式。

        (3)最重要的是:不藏起来,键盘一直占了半个屏啊,Robotium要可视控件才能操作,弹出键盘可能会影响其他控件的操作。

    这么说,Robotium在enterText的时候做performClick和hideSoftKeyboard是很合理的。

 

    回到之前的问题,为什么它会导致“信息发送失败”呢?

    因为:这个产品设计是,藏起键盘时,bottom_bar会回退到初始状态。如图:

    QQ图片20141127184039

    bottom_bar初始状态时,是没有输入框和发送按钮的。先不管edit和btn有没被GC,光控件不可视,click操作就会失败。至于成功/失败随机,是因为hideSoftKeyboard事件响应和click速度参差造成的。

    只能说这种应用场景下,Robotium表示无能为力。

 

解决方案:

1. 对Robotium进行扩展,实施额外enterText接口,但这会对日后升级Robotium带来不便。

2. 修改案例避免问题。



本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/p/4126979.html,如需转载请自行联系原作者。


目录
相关文章
|
人工智能 机器人 测试技术
论文介绍:零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步
【5月更文挑战第4天】SAM-6D框架是零样本6D物体姿态估计的突破,能检测并准确估计新物体姿态,推动具身智能发展。该框架结合实例分割和姿态估计模型,实现RGB-D图像中的物体分割与姿态估计。在BOP基准测试中,SAM-6D超越现有方法,展示出色泛化能力,但还需应对光照变化、遮挡等问题,以提升现实环境中的性能。[论文链接](https://arxiv.org/pdf/2311.15707.pdf)
525 13
|
存储 边缘计算 人工智能
《CDP企业数据云平台从入门到实践》——CDP/HDP 何去何从 (1)
《CDP企业数据云平台从入门到实践》——CDP/HDP 何去何从 (1)
678 0
|
算法 Java
自学编程,看书还是视频?
自学编程,看书还是视频?
214 0
|
存储 数据安全/隐私保护
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1046 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1732 9