如何为线程运行方法编写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();
我有 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();