gpt4 book ai didi

java - 在 RFT 中保留映射的 TestObject 是否安全?

转载 作者:行者123 更新时间:2023-11-30 04:18:37 26 4
gpt4 key购买 nike

映射的测试对象通常通过 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 都会重新查找(并随后取消注册)测试对象。<​​/p>

如果没有缺点,为什么我找到的每个引用都专门通过 getter 方法访问 TestObjects?例如。 An Object-Oriented framework for IBM RFT , list 2 和 3。

最佳答案

我认为,首先是因为

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 方法返回的不同类型的 TestObjects(GuiTestObject/TextGuiTestObject/SelectGuiSubitemTestObject)等的存在。

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

关于java - 在 RFT 中保留映射的 TestObject 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com