我有一个稍微复杂的测试结构,所以忍受我,
我有一系列的testng测试用例,每次我收集一些关于测试的数据(不是直接但是使用我写的库)。该库一旦获取数据就会启动另一个线程上的分析程序,主线程继续执行其余的测试。 (我之所以这样做是因为分析耗时很长,而且我不希望主测试被阻止)。
最后只剩下几个分析程序线程但是testng仍然关闭了测试,并且无法分析最后几个测试用例的数据。
我最后不想要硬编码的睡眠。有没有办法可以指示TestNG等到这个测试产生的任何线程(直接或通过相关的库)完成?
答案 0 :(得分:4)
您通常可以执行以下操作之一:
1)通过使主线程使用
Thread.join();
2)使另一个线程成为非守护进程或用户线程:link
Thread.setDaemon(false);
当运行的唯一线程都是守护程序线程时,Java虚拟机退出。必须在线程启动之前调用此方法。