在本文中,我们将深入探讨如何在IBM Rational Functional Tester (RFT) 的环境中有效地测试定制的Java控件,这些控件并未包含在标准Java库中,通常对GUI自动化测试构成了挑战。RFT 提供了两个关键方法:getProperty 和 invoke,用于处理这类非标准控件的自动化测试。
首先,对象图(ObjectMap) 是RFT中管理GUI元素的重要工具,它允许我们通过控件的ID或位置来查找和操作它们。通过ObjectMap,我们可以获取定制控件的属性,如在RationalTextGuiTestObject接口中使用getText和setText方法获取或设置Swing文本框的文本内容。
然而,对于非标准控件,如Java applet(如Lotus Notes中的Editorapplet,如图1所示),由于它们不遵循标准API,RFT并不能提供全面的支持。这些applet可能有自定义的方法和事件处理,使得直接调用这些方法变得困难。这就需要我们利用getProperty方法,该方法允许我们查询控件的私有属性或动态获取其内部状态,从而了解其行为。
invoke方法则更为灵活,它允许我们执行一个字符串形式的操作,这对于调用非标准控件的特定方法或执行自定义事件极为有用。通过传递适当的参数,我们可以模拟用户的交互行为,如点击按钮、选择列表项等,即便这些控件的源代码并未公开。
在进行复杂案例的测试时,我们需要将所有相关的组件封装在一个小窗口类中,这样有助于管理和复用测试脚本,同时保持代码结构清晰。遵循最佳实践,这可能涉及到编写可扩展的适配器类,以便在RFT与定制控件之间建立桥梁,减少直接依赖于控件内部实现的测试代码。
总结来说,虽然Rational Functional Tester 主要设计用于标准Java控件的自动化测试,但在处理定制控件时,通过灵活使用getProperty和invoke方法,以及适当的设计模式,可以实现一定程度的自动化测试。这需要开发者的深入理解和定制控件的工作原理,以及对RFT工具的熟练运用。通过这样的方法,可以确保非标准控件的测试覆盖率,并且提升测试的稳定性和可靠性。