Java通过调用main来创建线程

Tri*_*ack 1 java junit multithreading unit-testing client-server

我有一个客户端服务器应用程序,为了测试目的,我需要通过调用在测试方法中启动客户端

Client.main();
Run Code Online (Sandbox Code Playgroud)

这创造了一些新的线索.现在我需要等到该线程完成后再在我的测试中执行断言.我怎么知道这发生的时间?或者,我怎么知道,调用启动了哪个线程(客户端也可以创建其他线程).

Jon*_*eet 6

main编程方式调用不会自行启动新线程.只有当main方法具有显式启动新线程的代码时才会发生这种情况.如果是这种情况,您应该更改Client为以某种形式提供对此线程的访问权限,以便您可以调用join()它.(调用Thread.join()是等待线程完成的标准方法.)

Client.main()执行任何任务,其他比开始一个新的线程?如果没有,那么测试可能更简单,只需调用run()新线程最终运行的任何方法,并尽可能使测试成为单线程.