java - RCPTT 从脚本运行 Java 代码

标签 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);

我找不到任何方法来做到这一点,只是想知道这是否可行?

最佳答案

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

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

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

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

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

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

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

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

关于java - RCPTT 从脚本运行 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39488040/

相关文章:

java - JPQL和Native Query执行顺序不同

java - 在 Eclipse RCP 安装时解绑 Bundle-NativeCode

java - 如何将我自己的文本悬停到默认 Eclipse 编辑器中?

java - 使用 SWT 浏览器小部件进行打印

java - 如何在Eclipse中调试外部插件?

java - Xuggle 和 java 库路径

java - 根据客户端请求将数据流式传输到 Web 套接字

Java equals 方法的行为不符合预期

java - 公式延迟加载不起作用

java - 如何在应用程序启动时选择 Handle MenuItem