データキューで作業しているワーカープロセスがあります。Atraining 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関数への呼び出しは決して戻りません(ワーカーは継続的に実行されると想定されているため)。この場合、単体テストを作成するべきではありませんか?はいの場合、ワーカーが希望どおりに機能していることを確認する他の形式のテストを作成するにはどうすればよいですか?