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

How to write junit test case for thread run method

我有 public void 运行() 方法。在 运行 方法中,我正在调用三个(CurrentDate、generateReport 和 update)更多方法,如下所示。我的疑问是,对于 运行 方法,我没有任何参数来传递 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);
            }
        }
    }
}

您不能将任何参数传递给重写的 运行 方法。如果您通过它,它不再被覆盖,它就会过载。

所以最好使用 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();