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

Java 使用Eclipse远程运行Junit测试,就像它在本地运行一样,java,eclipse,junit,Java,Eclipse,Junit,我四处搜索,在这个网站和其他网站上阅读相关问题,但没有找到解决方案。我感到奇怪的是,一个人并不存在,所以让我在这里详细说明我的问题: 我定期使用Junit4+Eclipse来测试我的代码。在某些情况下,某些测试可能会占用大量CPU和/或内存,使我的工作站在测试期间无法使用。这是我试图解决的难题 我希望通过远程服务器获得完全相同的行为。我想: 仍然能够设置断点并调试我的应用程序 使用Eclipse中的Junit视图查看测试的进度 单击按钮启动测试(允许生成过程和文件复制,但只有在有效的情况下) 在

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

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

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

  • 仍然能够设置断点并调试我的应用程序
  • 使用Eclipse中的Junit视图查看测试的进度
  • 单击按钮启动测试(允许生成过程和文件复制,但只有在有效的情况下)
  • 在我看来,我设想了一些东西,将文件同步到远程服务器,在那里用与本地机器上完全相同的参数启动java进程,使调试端口可用(不仅仅是本地主机),并将eclipse连接到它,使调试和junit视图都能工作

    我怎样才能做到这一点

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

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

  • 最简单的方法是使用以下命令在远程mashine上调用:

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8998,server=y,suspend=y -cp ... org.junit.runner.JUnitCore <test class name>
    
    java-Xdebug-Xrunjdwp:transport=dt_socket,address=8998,server=y,suspend=y-cp。。。org.junit.runner.JUnitCore
    
    因此,它将一直等待,直到您从Eclipse在端口8998连接远程调试器为止


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

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

    为此尝试vs code远程ssh扩展。

    我也一直在考虑寻找eclipse代码的JUnit插件,如果这是最后一个办法,我会分出一个解决方案。我理解你的动机是你的测试消耗了太多的资源。是测试还是测试的代码降低了机器的速度?您是否使用数据库设置和每个测试用例的拆卸来运行integrationtests?测试的代码会降低机器的速度。每个测试类都有设置和分解,通常包括10-15个测试。我如何使它成为一个无缝的过程,在Eclipse中点击一个按钮将同步代码,启动java进程并附加到它?您是说在远程主机上启动java进程吗?我想您可以编写一个脚本,开始使用Eclipse的外部工具配置(例如,使用ssh启动远程命令)。然后,您可以启动“远程Java应用程序”启动配置以连接到该远程进程。是否有一种方法可以一次将所有这些结合起来?总有一种方法。但是您可能需要编写自己的Eclipse插件。这是相当具体的你自己的需要。