• SilkTest天龙八部系列1-初始化和构造函数


    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)

  • 相关阅读:
    ActiveSync合作关系对话框的配置
    WINCE对象存储区(object store)
    Wince 隐藏TASKBAR的方法
    Wince输入法换肤换语言机制
    poj 3080 Blue Jeans 解题报告
    codeforces A. Vasily the Bear and Triangle 解题报告
    hdu 1050 Moving Tables 解题报告
    hdu 1113 Word Amalgamation 解题报告
    codeforces A. IQ Test 解题报告
    poj 1007 DNA Sorting 解题报告
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3293664.html
Copyright © 2020-2023  润新知