RCPTT从脚本运行Java代码

Bre*_*anM 5 java rcp eclipse-rcp eclipse-rcptt

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

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

MulticastSocket socket = new MulticastSocket();
socket.setNetworkInterface(interfaceTarget);

InetAddress group = InetAddress.getByName("220.2.2.2");
socket.joinGroup(group);
Run Code Online (Sandbox Code Playgroud)

我无法找到任何方法来做这个只是想知道这是否可能?

Ste*_*ler 5

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

换句话说,脚本在RCPTT IDE或测试运行程序进程中执行.实际的测试应用程序(AUT)只包括RCPTT运行时,它有效地打开一个telnet套接字,通过它接收命令并通过文本语言发送结果.因此,一切都必须坚持该协议,你不能做任何未开箱即用的协议指定的事情.

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

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

<get-something-from-somewhere> | get-object | invoke methodName arg0 arg1 ...
Run Code Online (Sandbox Code Playgroud)

调用静态方法的前提条件invoke-static是可以从AUT内部访问要调用的方法.要实现这一点(如果您所需的方法不是AUT的一部分),您可以在AUT中添加一个测试支持包,声明静态方法.这样您就可以实现问题中给出的代码段.

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

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