我有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);
}
}
}
}
答案 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();