Как написать тестовый пример junit для метода запуска потока - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть публичный метод void run (). Внутри метода run я вызываю три (CurrentDate, generateReport и update) больше методов, как показано ниже. Я сомневаюсь, что для метода run у меня нет параметров для передачи объекта Details. Как передать объект Details для запуска метода из тестового метода junit. Я много гуглил, но не нашел решения.

@Override
public void run() {

    while(true) { 
        Details Obj = ruleQueue.peek();
        if(Obj != null && CurrentDate(Obj)) {
            ruleQueue.poll();

            Generator generator = new Generator();
            generator.generateReport(Obj.getId(),Obj.getLastExec(), ruleObj.getnextExec());

            updateDate(Obj);
            try {
                dao.update(Obj);

            }
            catch (DocumentClientException e) {
                logger.error(e);
            }
        }
    }
}

1 Ответ

0 голосов
/ 08 ноября 2018

Нельзя передавать аргументы переопределенному методу выполнения.Если вы передаете, он больше не перезаписывается, он перегружен.

Поэтому лучше использовать конструктор Thread для совместного использования объектов:

class MyThread implements Runnable{

    private Details details;

    public MyThread(Details details){
        this.details = details;
    }


    @Override
    public void run(){

        // Use details here
    }

}

Для тестирования или вызова этого потока:

Details details = new Details();
MyThread t = new Mythread(details);
t.start();
...