有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Eclipse远程运行Junit测试,就像在本地运行一样

我四处搜索,在这个网站和其他网站上阅读相关问题,但没有找到解决方案。我感到奇怪的是,一个人并不存在,所以让我在这里详细说明我的问题:

我定期使用Junit4+Eclipse来测试我的代码。在某些情况下,某些测试可能会占用大量CPU和/或内存,使我的工作站在测试期间无法使用。这是我试图解决的难题

我希望通过远程服务器获得完全相同的行为。我想:

  1. 仍然能够设置断点并调试我的应用程序
  2. 使用Eclipse中的Junit视图查看测试的进度
  3. 单击按钮启动测试(允许生成过程和文件复制,但只有在有效的情况下)

在我看来,我设想了一些东西,将文件同步到远程服务器,在那里用与本地机器上完全相同的参数启动java进程,使调试端口可用(不仅仅是本地主机),并将eclipse连接到它,使调试和junit视图都能工作

我怎样才能做到这一点

可能有助于我们找到解决方案的几个主要问题:

  1. 在本地运行时,Eclipse如何与java进程通信(用于调试目的和Junit视图)
  2. 我如何参与JUnit测试的java过程,以便将所需文件复制到远程服务器
  3. 如何使进程从远程而不是本地生成
  4. 如何让Eclipse连接到远程主机而不是本地主机

共 (2) 个答案

  1. # 1 楼答案

    您可以设置jenkins CI服务器,通过git同步代码(或者使用ftp或其他方式进行复制),在git钩子或通过脚本触发的jenkins作业中执行测试。然后,像尤金·库莱肖夫建议的那样,远程调试到正在运行的测试过程中。这个过程可以由您从eclipse调用的ant脚本自动化。应该有一个mylin连接器(for example),通过它可以监视正在运行的测试。我不知道是否可以使用eclipse的标准JUnit视图来查看正在运行的测试,而不使用一些自定义插件(如果有的话)

  2. # 2 楼答案

    最简单的方法是使用以下命令在远程mashine上调用command line JUnit runner

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8998,server=y,suspend=y -cp ... org.junit.runner.JUnitCore <test class name>
    

    因此,它将一直等待,直到您从Eclipse在端口8998连接远程调试器为止

    您还可以使用Eclipse的Target Management工具将文件传输到远程系统并启动远程命令。项目页面上有几个教程