51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1810|回复: 1
打印 上一主题 下一主题

Coded UI Test三个必知的函数

[复制链接]
  • TA的每日心情
    无聊
    7 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-7 15:43:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    前两天,一位朋友发消息问我:他在自己的程序(而非Visual Studio测试用例代码)中调用Coded UI Test(以下简称为CUIT)的函数去操作UI界面,可是返回的对象句柄总是空,继续使用则会抛出NullReferenceException异常。并且同样的代码在VS CUIT环境下是可以正确执行的,也不知道问题出在了哪里?

    理论上讲,在VS集成环境中能够执行的测试代码,在一般的程序代码中也是可以执行的,这里问题的关键在于,是否在你自己的程序中配置好了CUIT测试执行的环境, 即CUIT回放执行引擎是否正确启动了。当使用VS的CUIT工程时,每个测试类都被标识了[CodedUITest],当VS的Mstest测试引擎在执行每个测试用例的时候,它会自动读取测试所配置的属性,以判断测试的类型,当它看到是CodedUITest后,它会自动初始化CUIT的底层回放(Playback)执行引擎,让后执行该测试用例。

    1. [CodedUITest]
    2. public class CodedUITest1
    3. {
    4.     public CodedUITest1()
    5.     {
    6.     }
    7.     ...
    8. }
    复制代码

    在你的程序中是没有办法直接使用CodedUIAttribute和Mstest,这就需要Playback.Initialize()/Playback.Cleanup()这两个函数来帮助你完成启动初始化CUIT的底层回放执行引擎的工作,否则你的程序中无法直接应用CUIT类库中函数的。其实,不只是在非VS CUIT测试环境中调用CUIT函数需要显式调用Playback.Initilize/Cleanup,在CUIT的TestMethod外部调用任何Microsoft.VisualStudio.TeamTest.UITesting名字空间下的任何函数时,都需要这样显式地进行一下初始化和清理工作。

    除了上面的函数,CUIT还有其它一些很有用的函数,例如:UITestControl.DrawHighlight() ,它可以在控件的边界上画出一个蓝色的边框并保持7秒钟 (这是时间长度是不可配置的),这在调试或者诊断问题的时候可以帮你判断所要的找的控件是否被成功地定位到了。

    还有UITestControl.CaptureImage() 和 UITestControl.Desktop.CaptureImage() ,它们可以用来获取控件和整个屏幕的截屏,这些截屏在测试失败的时候是非常有用的,可以帮助快速分析和定位测试失败的原因,特别是在问题出现具有一定随机性不易Repro的情况下,错误现场的图片对于分析问题至关重要。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 17:27 , Processed in 0.063190 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表