【问题标题】:Is it safe to hold on to a mapped TestObject in RFT?在 RFT 中保留映射的 TestObject 是否安全?
【发布时间】:2013-07-17 20:27:52
【问题描述】:

映射的TestObjects通常通过getter方法访问,例如

button().click();
// Other code
button().click();
// ...
button().click();

我有什么理由不应该检索一次 TestObject 并重用它?例如

GuiTestObject button = button();
button.click();
button.click();
button.click();

或者,换一种说法,RFT 生成 getter 方法而不是成员变量有什么原因?

我能想到的唯一潜在原因是避免占用被测应用程序的内存,但这对我来说没有任何意义; Java 终结器不可靠,所以我怀疑当 TestObject 被垃圾收集时,RFT 是否会释放任何资源。此外,即使我关闭并重新打开应用程序,我也可以继续使用相同的映射 TestObject,这表明 RFT 每次尝试使用它时都会重新查找(并随后取消注册)测试对象。

如果没有缺点,为什么我发现的每个引用都只能通过 getter 方法访问 TestObjects?例如。 An Object-Oriented framework for IBM RFT,清单 2 和 3。

【问题讨论】:

    标签: java rft


    【解决方案1】:

    我认为,首先是因为

    button().click();  
    

    对用户而言,代码比 .. 更简洁/更简单。

    GuiTestObject button = new GuiTestObject( getMappedTestObject("thebutton"));//This currently resides in the helper file.
     button.click();
    

    其次,button() 方法可以传递一个“Anchor”和一个“Flag”,这也是在 Helper 类中再次实现的。所以再次

        button(anchorobject,flags).click();
    

    比拥有更简单,多了一个按钮对象

        GuiTestObject button1 = new GuiTestObject(getMappedTestObject("thebutton"),anchor,flags);
        button1.click(); 
    

    如果你的意思是有类似的东西..

    GuiTestObject button = button();//where button() still is in helper class
    button.click();
    button.dosomthingelse();
    

    然后我们需要为按钮指定实际的对象类型,然后我们为文本控件、选择和树等设置不同的 TestObject 类型。 使用这种现有方法,用户可以完全不知道对象的 getter 方法返回的不同类型的测试对象(GuiTestObject / TextGuiTestObject/SelectGuiSubitemTestObject)等的存在。

    我们在脚本中处理的是一个驻留在播放过程中的TestObject。 TestObject 只是在应用程序中查找实际对象并为其创建代理(驻留在应用程序进程中)的规范,并且该代理是在特定操作完成后释放的(例如 click() )。但是,TestObject 仍然有效,并且正如您所说的那样,如果您重用 testobject,RFT 将再次找到该对象。 TestObject 将在需要时由垃圾收集器处理,我猜用户可以进一步优化该代码。 最后回答你的问题,我不知道使用你拥有的测试对象会有什么缺点。我认为它也不会在性能方面对您有所帮助。 尝试使用 Object 而不是 getter 来计时它可以节省多少时间,在静态启用的 Java 应用程序上尝试。

    【讨论】:

    • 使用锚点的重载方法非常好。我不是出于性能原因。我正在考虑将我的 TestObjects 组织成简单的容器类,就像在我链接到的框架中一样,并且认为使用字段而不是 getter 方法会更简单。在这种情况下,我也不必知道该类,因为我可以在不声明对象类型变量的情况下执行container.object.click()。我只是想知道这样做是否有任何固有的危险,但看起来它是安全的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2013-01-24
    • 2021-12-31
    相关资源
    最近更新 更多