SilkTest没有提供专门的构造函数机制,但是在类对象生成的过程中,会先初始化在类中申明的变量。我们可以在初始化该变量的时,

调用某些函数完成对象初始化工作,看上去好像是调用了构造函数一样。不过要记住的是,这只是用来模拟构造函数而已。


下面是一个例子:

[-] winclass myClass
[ ] boolean bConstructed = Constructor (SubStr (WindowTag(this), 2))
[ ] string sSetMe
[ ] integer i
[ ]
[-] boolean Constructor (string sConstructorData)
[-] if (!IsSet(bConstructed))
[ ] sSetMe = sConstructorData
[ ] return true
[ ]
[-] property SetMe
[-] string Get()
[ ] return sSetMe
[ ]
[ ] // test that the myClass constructor works
[-] testcase testClass () appstate none
[ ] window myObject = myClass ("Set property")
[ ] print(WindowTag(myObject))
[ ] print ("myObject.SetMe = {myObject.SetMe}")
[ ] print ("myObject.i = {myObject.i}")

我们来分析一下这段代码。
一开始声明了一个myClass类,他有三个变量,其中bConstructed的初始化调用了类的一个成员函数Constructor(),这个函数其实可以叫任何名字。所以,window myObject = myClass ("Set property")这句直接会导致成员函数Constructor()被调用。那么,为什么要给该函数传一个参数SubStr (WindowTag(this), 2)进去呢,这需要了解一下WindowTag()的意义,WindowTag()会返回对象的tag,而不管该对象是否存在。一般的Tag都是以斜线/开头的,
window myObject = myClass ("Set property")这句的意思你就可以理解为(其实这不太容易理解,没办法,4Test当初就是这么设计的)获取对象"Set property"的Tag,它的Tag就是"/Set property"。所以在初始化bConstructed的过程中,同时初始化了成员变量bConstructed,而成员变量i并没有被初始化,所以当你运行整个脚本的时候,会得到如下的输出:

[-] Testcase testClass - 1 error
[ ] /Set property
[ ] myObject.SetMe = Set property
[ ] *** Error: Variable (i) has not been set
[ ] Occurred in testClass at test3.t(20)

SilkTest天龙八部系列1-初始化和构造函数的更多相关文章

  1. SilkTest天龙八部系列4-ChildWin

    一直觉得SilkTest的ChildWin不好理解,今天大致看了一下,其实它和DialogBox每啥区别,也是一种window类型.帮助里面说,典型的ChildWin就是文档窗口.在Windows上, ...

  2. SilkTest天龙八部系列3-动态父窗口

    SilkTest中用parent语句来声明某个window的父窗口,这会帮助silktest在识别该对象时检查其是否是由该父窗口打开,如果parent语句申明的父窗口并不存在,那么该对象无法被正确识别 ...

  3. SilkTest天龙八部系列5-类的属性

    SilkTest的面向对象机制让用户可以为类定义属性,用property语句实现.除此以外用户在类中还可以定义成员变量和不可变的setting属性.也就是是说Silktest类中可以有以下三种属性/变 ...

  4. SilkTest天龙八部系列6-用open agent进行测试

    SilkTest支持两种测试模式,一种是用classic agent,另一种就是用我们今天要介绍的open agent. open agent可以提供和classic agent差不多的录制回放功能. ...

  5. SilkTest天龙八部系列7-动态对象识别

    在测试web应用时,我们常常需要面对web页面对象变化频繁,并且使用预定义方式识别对象慢的困难.为了解决这些问题,SilkTest引入了dynamic object recognition技术,它使用 ...

  6. C++:对象的初始化和构造函数

    对象的初始化和构造函数 构造函数:是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化.构造函数 的名字必须与类名相同,它不要用户来调用,而是在建立对象时自动执行的 形式一: 类名 对象名(实参 ...

  7. Unity-Animator深入系列---StateMachineBehaviour初始化时间测试

    回到 Animator深入系列总目录 结果和想的有点出入 测试结果: 1.SMB初始化会被调用多次,次数不可控,当Animator组件重复开关则重复初始化. 2.SMB支持构造函数 MyClass p ...

  8. WorldWind源码剖析系列:BMNG类构造函数深入分析

    BMNG构造函数深入分析 一.主要类图 二.主要功能: 1)        BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...

  9. Bootstrap源码分析系列之初始化和依赖项

    在上一节中我们介绍了Bootstrap整体架构,本节我们将介绍Bootstrap框架第二部分初始化及依赖项,这部分内容位于源码的第8~885行,打开源码这部分内容似乎也不是很难理解.但是请站在一个开发 ...

随机推荐

  1. [状压dp]HDU3001 Travelling

    题意: 走n个城市, m条路, 起点任意, 每个城市走不超过两次, 求最小花费, 不能走输出-1. $1\le n\le 10$ 分析: 每个城市的拜访次数为0 1 2, 所以三进制状压, 先预处理1 ...

  2. 131. Palindrome Partitioning

    题目: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

  3. in on at 总结

    in,on,at的时间用法和地点用法 一.in, on, at的时间用法 ①固定短语: in the morning/afternoon/evening在早晨/下午/傍晚, at noon/night ...

  4. bzoj3262

    三维裸的做法是一维排序,剩下树套树,可我好像还没写过树套树先说cdq分治吧,先对一维排序,相当于原来修改询问里的时间线在这上面分治.划分,计算前半部分对后半部分的影响,显然可以按第二维的顺序维护树状数 ...

  5. bzoj1069

    四边形的问题可以转化为三角形处理穷举对角线,然后处理上下两个三角形,旋转卡壳 ..] of double; q:..] of longint; l,r,i,j,k,t,n:longint; ans:d ...

  6. ☀【组件】加载 load

    Bear / js / utils / load.js 动态修改script标签中的src属性存在的问题 javascript创建css.js,onload触发callback兼容主流浏览器的实现 各 ...

  7. fcitx中文输入法

    Ubuntu自带的输入法不太尽如人意思,用起来也不方便,我在Ubuntu和FC中都是用Fcitx,很好用! 安装配置如下: 1. 安装 fcitx sudo apt-get install fcitx ...

  8. Unity3D Mathf函数

    Mathf.Abs绝对值 计算并返回指定参数 f 绝对值. Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f ...

  9. [TSOI2005]Exhibit

    问题描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy 想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字, a 和 b ,代 ...

  10. 关于FP-Growth 算法一个很好的ppt-学习分享

    http://pan.baidu.com/share/link?shareid=1980963149&uk=1594824745