如何为线程运行方法编写junit测试用例

时间:2018-11-08 16:47:41

标签: java junit mockito powermockito

我有public void run()方法。在运行方法内部,我将调用以下三个方法(CurrentDate,generateReport和update)。我的疑问是,对于run方法,我没有任何参数可以传递Details对象。如何通过junit测试方法传递Details对象以运行方法。我在Google上搜索了很多,但没有解决方法。

@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 :(得分:2)

您不能将任何参数传递给重写的run方法。如果您通过了,则不再覆盖它,它会超载。

因此最好使用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();