【问题标题】:How can i test the interactions between 2 or more clients on different VMs?如何测试不同 VM 上的 2 个或多个客户端之间的交互?
【发布时间】:2010-08-23 18:11:05
【问题描述】:

我需要在完整的端到端测试中测试 2 个或更多 java 客户端之间的交互。

理想情况下,如果没有 GUI,它应该类似于(Junit 语法):


@Test public void EndToEndTest(){ App firstApp = new App(); App secondApp = new App(); String msg = "something"; firstApp.send(msg); //this method will magically send msg to secondApp String msgReceived = secondApp.getLastMsg(); AssertEquals(msgReceived, msg); }

上面的代码不是我想要的,因为它使“应用程序”在同一个 VM 上运行。

我自己想到的解决方案是编写一个假的 main 实例化 secondApps 并将其所有输出写入文件,通过系统调用启动它,然后检查结果,但它似乎是真正的矫枉过正。此外,使用这样的策略,测试 GUI 会更加困难(如果不是不可能的话)。

感谢您的帮助。

【问题讨论】:

    标签: java client-server virtual-machine acceptance-testing


    【解决方案1】:

    流程:

    一种解决方案是使用 Runtime.exec 启动另一个进程,这将允许您从启动它的进程中监视该进程。这个新进程将在另一个 JVM 上运行。相当于fork。

    在处理线程时需要处理许多注意事项,以便在 Java 中管理另一个进程。

    本教程应该会有所帮助:When Runtime.exec() won't

    通讯:

    有几种方法可以让多个进程相互通信。如果您使用的是 Runtime.exec,您可以通过每个程序的输入和输出流进行通信。

    这很慢,更好的解决方案是使用 sockets 在每个进程之间直接通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 2013-12-31
      • 2020-02-16
      • 2020-06-30
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多