RCPTT从脚本运行Java代码



我正在寻找一些方法来直接从我为我们的RCP应用程序编写的测试脚本运行一些Java代码。

在单击应用程序中的特定按钮之前,我需要在测试中设置多播套接字。像这样:

MulticastSocket socket = new MulticastSocket();
socket.setNetworkInterface(interfaceTarget);
InetAddress group = InetAddress.getByName("220.2.2.2");
socket.joinGroup(group);

我无法找到任何方法来做到这一点,只是想知道这是可能的吗?

您不能直接执行任意Java代码(即,通过在脚本中编写或引用Java代码),因为AUT在单独的进程中运行,您只能从外部进行通信。

换句话说,脚本在您的RCPTT IDE或测试运行器进程中执行。实际的被测应用程序(AUT)只包括RCPTT运行时,它有效地打开telnet套接字,通过该套接字接收命令并通过文本语言发送结果。因此,所有的东西都必须遵守协议,你不能做任何协议没有指定的事情。

也就是说,您可以通过invokeinvoke-static脚本命令调用AUT中现有的Java类和方法。

invoke的前提条件是您能够通过脚本语言检索对象引用。例如,你可以用

<get-something-from-somewhere> | get-object | invoke methodName arg0 arg1 ...

通过invoke-static调用静态方法的先决条件是您想要调用的方法可以从AUT中访问。为了实现这一点(如果你想要的方法还不是AUT的一部分),你可以在你的AUT中添加一个测试支持包来声明静态方法。这样,您就可以实现问题中给出的代码片段。

最后,作为第三个也是最高级的选项,您可以添加自己的ECL命令。这是通过实现AUT运行时定义的扩展点,并将实现作为包包含在AUT中(类似于invoke-static方法,但更加灵活,因为您可以构建命令链)来实现的。

对于这三种情况,该链接作为在AUT中执行任何类型的自定义代码的起点…

最新更新