我正在运行Eclipse3.5,我有一个常见的问题,为了测试我的程序,我必须点击大约6-7次,而不是一次点击播放按钮。
问题是我正在编写网络应用程序,因此我有一个“服务器”的运行配置和一个“客户端”的运行配置。然后,为了测试我的程序,我必须启动服务器,然后启动一个客户端,然后再启动另一个客户端等等。有没有什么方法可以将这些自动化到一个运行配置中?
发布于 2010-02-03 12:44:11
您可以直接调用任何类的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');
}
}完成了!
嗯,差不多吧。您可能希望在调用客户端的main之前进行一些延迟,以确保服务器已启动并正常运行。
不过,其中一个人认为。所有服务器和客户端都将在同一个JVM上运行。在大多数情况下(您只想测试它的交互,而与类加载无关,因为当它们在/不在同一个JVM上时,它们的行为会不同),这应该是可以的。如果您确实想让它在不同JVM上运行,那么可以使用Ant来运行它们。
如下所示:
<project name="TestServerClient" default="test" basedir=".">
<target name="test">
<java classname="my.Server">
<arg value="server1.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
<java classname="my.Client">
<arg value="client1.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
<java classname="my.Client">
<arg value="client2.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
</project>所以你可以运行这只蚂蚁,仅此而已。
希望这能有所帮助。
发布于 2011-07-05 00:39:33
只需完成验证答案:如果您希望并行执行服务器和客户端,则需要为每个客户端和服务器实例启动一个新线程。您可以执行以下操作:
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) {...}
}发布于 2010-02-03 12:37:40
那么,为什么不使用JUnit编写一个测试用例呢?我是说,
编写测试用例
我知道我们不应该称它为单元测试,因为它将依赖于网络IO。所以,只要你觉得合适就叫它吧。我的建议就是使用JUnit来解决这个问题。
https://stackoverflow.com/questions/2189684
复制相似问题