【问题标题】:RCPTT running Java code from the scriptRCPTT 从脚本运行 Java 代码
【发布时间】:2017-01-22 02:50:12
【问题描述】:

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

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

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

InetAddress group = InetAddress.getByName("220.2.2.2");
socket.joinGroup(group);

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

【问题讨论】:

    标签: java eclipse-rcp rcp eclipse-rcptt


    【解决方案1】:

    您不能直接执行任意 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 中添加一个测试支持包。这样您就可以实现问题中给出的代码 sn-p 。

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

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

    【讨论】:

    • 最后我们没有使用 RCPTT 进行测试,但这将允许调用 java...如果编写命令不是一件苦差事的话,我会更喜欢...但感谢您的回答,我会接受它以供其他人参考
    • @Stefan Winkler,我不清楚答案。您能否提供更多详细信息或更有用的链接?
    • @BrendanM 你最终实现了哪个工具而不是 rcptt?
    猜你喜欢
    • 2018-09-08
    • 2011-08-18
    • 1970-01-01
    • 2010-10-06
    • 2023-03-05
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多