Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从脚本运行Java代码的RCPTT_Java_Eclipse Rcp_Rcp_Eclipse Rcptt - Fatal编程技术网

从脚本运行Java代码的RCPTT

从脚本运行Java代码的RCPTT,java,eclipse-rcp,rcp,eclipse-rcptt,Java,Eclipse Rcp,Rcp,Eclipse Rcptt,我正在寻找直接从为RCP应用程序编写的测试脚本运行Java代码的方法 在单击应用程序中的特定按钮之前,我需要在测试中设置一个多播套接字。大概是这样的: MulticastSocket socket = new MulticastSocket(); socket.setNetworkInterface(interfaceTarget); InetAddress group = InetAddress.getByName("220.2.2.2"); socket.joinGroup(group);

我正在寻找直接从为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套接字,通过该套接字接收命令并通过文本语言发送结果。因此,所有内容都必须遵守该协议,并且您不能在开箱即用的情况下执行协议未指定的任何操作

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

调用
的先决条件是您能够通过脚本语言检索对象引用。
例如,你可以使用

<get-something-from-somewhere> | get-object | invoke methodName arg0 arg1 ...
|获取对象|调用方法名arg0 arg1。。。
通过
invoke static
调用静态方法的先决条件是要调用的方法可以从AUT中访问。为了实现这一点(如果您想要的方法还不是AUT的一部分),您可以在AUT中添加一个声明静态方法的测试支持包。这样,您就可以实现问题中给出的代码片段

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


对于所有三种情况,都是在AUT中执行任何类型自定义代码的起点…

最后,我们没有使用RCPTT进行测试,但这将允许调用java…如果编写命令不是一件烦琐的事情,我会更愿意…但是感谢您的回答,我将为其他人接受它sreference@Stefan温克勒,答案我不清楚。你能提供更多的细节或更有用的链接吗?@BrendanM你最终实现了哪个工具而不是rcptt?