如何写一个Java代理
为了开发一个使用于Rational Robot的Java代理,你必须熟悉Java内部的反省,Java外部接口,和被用于开发应用程序或者applet的类库。
为了证明如何写一个嗲里,让我们使用我们前面讨论过的com.Borland.jbcl.control. TreeControl开发一个程序。
一个Rational Robot的Java 代理只不过是一个Java类,它为被测试的SQABasic对象提供了一个特殊指定的接口。就像先前提及的,TreeControl映射到SQABasic的JavaTree对象。IRbtTree是JavaTree的一个接口,它扩展于IRbtBase。这意味着TreeControl代理必须执行IRbtTree的指定函数(包括IrbtBase的指定函数)。
事实上,Rational提供的一些代理服务于基本类代理开发。TreeControl作为javax.swing.JComponent和java.awt.Component的父类。AwtBaseProxy或者JfcBaseProxy(这两个都被Rational支持)能够服务于基本类代理的开发。在本文中,能实现IRbtBase的AwtBaseProxy用于基础类服务。现在还需要实现的是指定在IRbtTree里的剩余的功能(或函数)。
代理类的编写开始时,需要列出属于代理的包和写代理需要的包:
package beech;
import Java.lang.Object;
import Java.awt.Point;
import rational.robot.awt.*;
import rational.robot.openapi.*;
接下来是类的主体:
public class JBCLTreeProxy extends AwtBaseProxy implements IRbtTree
{
public JBCLTreeProxy(){}
...
}
假如构造类被使用,那么公用的关键字将被使用。否则,Robot将无法找到代理或者是在试图调用代理时返回一个错误的信息。
Java proxy is unavailable: Proxy [requested for class
; using default proxy.
完成的代码见附录C。源代码展示的代理仅仅调用了被测是组件中的某个方法。举个例子,接口函数getNodeImage被用于区的每一个TreeControl对象的节点内容。Robot经过getNodeImage节点上的每一个对象,使用TreeControl的get函数的方法。Robot经过的getNodeImage 各节点上的内容被get函数返回。
GetNodeImage的执行被显示在下面:
编译源程序
为了编译源程序,环境变量类路径的设定需要修改。修改方法见最后一部分的描述,如下:
Start->Program->Rational SuiteTestStudio->Rational Test-> Java Enabler这步骤为Rational Robot和Java 过程的通讯而准备的。
图3:运行Rational Test Enabler for Java
点击安装程序的Complete去搜索所有可以安装的Java环境。一台机器通常有多个Java环境。
图4:选择Java Environments for Testing Runs
从展示的Java环境列表中,选择你需要运行的AUT(见图4)。你只要选择需要支持的JVM,你所选择的所有环境将会用于测试Java应用程序和applets。
点击Next完成安装,安装时将在sqarobot.jar文件中,加上classpath环境变量。
javac JBCLTreeProxy.java -d
这将在当前路径下创建一个分支路径,在那里放置JBCLTreeProxy.class。
jar fcv beechProxy.jar beech
这命令将压缩JBCLTreeProxy.class为beechProxy.jar.
发布Java代理
当类文件被压缩成jar格式,该代理已经做好了发布的准备。发布的过程如下:
- 从Rational Robot目录,选择Tools-> Extension Manager
确保Java的额外功能被选择(见图5)
图5:管理额外环境变量列表
- 直接编辑JavaClassMap.dat或者通过GUI去选择:
Tools -> General Options from Robot, 然后点击Java Class Mapping Tab.在Java object type选项中选择JavaTree,就像图6显示的。
图6: Java Class Mapping对话框
点击Add确定TreeControlclass 和他的代理类(见图7)
图7: Component Class and Proxy对话框
点击OK.
JavaClassMap.dat中的JavaTreesection将显示为:
[JavaTree]
com.Borland.jbcl.control.TreeControl=beech.JBCLTreeProxy
- 复制代理文件beechProxy.jar,并且Borland文件jbcl.jar和dx.jar到
TestDatastoeDefaultTestScriptDataStore TMS_scriptsJavaProxies
Start->Program->Rational SuiteTestStudio->Rational Test-> Java Enabler
图8: Rational Test Enabler for Java
点击Special Java Proxies按钮(图8)去选择代理文件位于的项目。为了搜索和运用已经安装的Java环境,我们需要点击Complete或者Quick去安装它们。
结论
使用Java代理,Rational Robot能够支持所有的Java类库,只要应用程序是使用可接受的JVM进行开发的。我们已经看到当需要第三方代理,Rational Robot是如何使用和如何编写Java代理去扩展它的能力。你能够使用附录A的应用程序(或者附录B中将其视为Applet运行的HTML页面)去测试你开发的Java代理。
附录
附录A:BCLControls应用程序的源程序
附录B:将JBCLControls作为Apple运行的HTML页面
附录C:BCLTreeProxy的源程序
(完)
版权声明:51testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。