1
我有一个工作进程在数据队列上工作。 A training worker
读取并处理来自training queue
的数据。它继续轮询并查看写入队列的新数据。单元测试阻止进程
我已经实现了劳动者如下:
public static void main(String[] args) {
startTraining()
}
public static boolean startTraining() {
trainingWorker = new WorkerImpl(config);
final Thread workerThread = new Thread(trainingWorker);
WorkerListener listener = new WorkerListener() {
public void onEvent(WorkerEvent event, Worker worker, String queue, Job job,
Object runner, Object result, Exception ex) {
if(event.equals(WorkerEvnet.JOB_SUCCESS) {
//get data
//process data
//send data
}
}
}
trainingWorker.addListener(listener, WorkerEvent.JOB_SUCCESS, WorkerEvent.JOB_FAILURE,
WorkerEvent.WORKER_ERROR, WorkerEvent.WORKER_POLL);
workerThread.start();
workerThread.join();
}
我想单元测试,看看工人读出的数据正确,正确处理它,并发送成功了。问题是由于Thread.join()
;对main函数的调用永远不会返回(因为worker是假设连续运行的)。在这种情况下,我不应该为它写单元测试吗?如果是的话,我该如何写一些其他形式的测试来确保工作人员按照要求工作?
你需要调用'workerThread.join()'吗?它的用途是什么?如果一个线程开始另一个线程并立即加入它,它可能已经完成了工作本身。 –
如果我不执行'thread.join()',工作进程就会死亡。我不希望工作进程需要永久生存。 – samach
它是一个解决方案,启动一个孤立的设置工人,与嘲笑队列?处理完这个模拟队列后,你可以停止工作。 – MemLeak