Ich habe eine Reihe von Code, um einen Job zu einer bestimmten Warteschlange innerhalb meiner @ Activate-Methode meiner Job-Klasse hinzuzufügen. Wenn ich JUnit für die Klasse ausführen, erhalte ich die Ausnahme nullPointer. PFB mein Code:Wie man JobBuilder.ScheduleBuilder.schedule() mit powerMockito mockt?
// 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();
}
// meine JUnit-Testklasse
@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);
}
Meine Ergebnisse:
1. Während die JUnit deckt "jobManager.createJob (topicname) .properties (config)", Nullpointer wird geworfen, wenn der Fluss zu ".schedule()"
kommt 2. Ich kann "return samplecontext.result(). message (" test message "). succeed()" nicht abdecken, dort wird auch nullPointer geworfen .
Kann mir jemand dabei helfen? Vielen Dank im Voraus.