在eclipse中运行多个java main方法

我正在运行Eclipse 3.5并且我经常遇到问题,为了测试我的程序,我必须做大约6-7次点击而不是单击播放按钮。

问题是我正在编写网络应用程序,因此我有一个“服务器”的运行配置和“客户端”的运行配置。 然后,为了测试我的程序,我必须启动服务器,然后是客户端,然后是另一个客户端等。无论如何要将其自动化为一个运行配置吗?

您可以直接调用任何类的main方法。 例如,如果您有Server和Client类,并且您想运行一个服务器和两个客户端,那么您可以执行以下操作。

public class Server { public void main(final String ... $Args) { final Server S = new Server(); S.config($Args); S.run(); } } public class Client { public void main(final String ... $Args) { final Client C = new Client(); C.config($Args); C.run(); } } public class Test_ServerClient { public void main(final String ... $Args) { Server.main('server1.cfg'); Client.main('client1.cfg'); Client.main('client2.cfg'); } } 

完成!

好吧,差不多。 您可能需要在调用主客户端之前做一些延迟,以确保服务器正常运行。

有人想到。 所有服务器和客户端都将在同一个JVM上运行。 在大多数情况下(你只是想测试它的交互并且与类加载无关,因为当它们不在同一个JVM上时表现不同),这应该没问题。 如果你真的想让它在不同的JVM上运行,你可以使用Ant来运行它们。

像这样的东西:

                          

所以你可以运行这个ant就是这样。

希望这可以帮助。

只是为了完成经过validation的答案:如果要并行执行服务器和客户端,则需要为每个客户端和服务器实例启动一个新线程。 你可以这样做:

 pulic class Test_ServerClient { public static void main(final String[] args) { Thread serverThread = new Thread() { public void run() { Server.main(args); } }; Thread clientThread = new Thread() { public void run() { Client.main(args); } }; serverThread.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } clientThread.start(); } } public class Server { public static void main(final String[] args) {...} } public class Client { public static void main(final String[] args) {...} } 

那么,为什么不使用JUnit编写测试用例。 我的意思是,

  • 准备2个属性文件,一个用于服务器,另一个用于客户端
  • 编写一个测试夹具,启动服务器和多个客户端以运行测试
  • 然后根据它编写测试用例

我知道我们不应该把它称为unit testing,因为它取决于网络IO。 所以,无论感觉合适,都要称之为。 我的建议就是使用JUnit。

您可以编写一个简单的入门程序,它将启动新JVM中的所有其他程序。 要在新JVM中调用,可以使用Runtime.exec()方法。

这就是它在很多unit testing中的完成情况。

您的入门程序可以将其他程序的列表作为参数,并将它们分别放入新的java进程中。

窗口 – >新窗口

分别运行单独的程序。