【发布时间】:2017-05-27 17:47:22
【问题描述】:
我有一组代码可以将作业添加到 Job 类的 @Activate 方法中的特定队列中。当我为该类运行 JUnit 时,我得到了 nullPointer 异常。 PFB 我的代码:
// MyJob.java
public abstract class myJob implements JobExecutor{
private ScheduledJobInfo jobInfo;
@Reference
private JobManager jobManager;
private String topicName = "abc/xyz";
private String cron= "0 0 0/12 ? * MON-FRI *";
// my activate method
@Activate
protected void activate(final Map<String, Object> config) {
jobInfo = jobManager.createJob(topicName)
.properties(config)
.schedule()
.cron(cron).add();}
}
@Override
public JobExecutionResult process(Job samplejob, JobExecutionContext samplecontext){
// logic inside process method
return samplecontext.result().message("test message").succeeded();
}
//我的JUnit测试类
@RunWith(MockitoJUnitRunner.class)
public class myJUnitTest{
@Mock
private Job job1;
@Mock
private JobExecutionContext context1;
@InjectMocks
private myJob sampleObj = new MyJob();
@Test
public void sampleActivate() throws Exception {
Map<String, Object> config = new HashMap<String, Object>();
config.put("abc", "abc");
sampleObj.activate(config);
sampleObj.process(job1, context1);
}
我的结果:
1. JUnit覆盖“jobManager.createJob(topicName).properties(config)”时,流到“.schedule()”时抛出nullPointer
2.我无法覆盖"return samplecontext.result().message("test message").succeeded()",还会抛出nullPointer。
谁能帮我解决这个问题? 提前致谢。
【问题讨论】:
标签: junit mockito jobs job-scheduling powermockito