### Question:
AdHocStarter { public JobExecution start(Job job) { return this.start(job, true, null); } AdHocStarter(JobLocator jobLocator, JobRepository jobRepository, JobPropertyResolvers jobPropertyResolvers,
                        @Value("${com.github.chrisgleissner.springbatchrest.addUniqueJobParameter:true}") boolean addUniqueJobParameter,
                        JobRegistry jobRegistry); JobExecution start(Job job); JobExecution start(Job job, Boolean async, Map<String, Object> properties); JobExecution start(JobConfig jobConfig);  }### Answer:
@Test public void startAsynchPropertyResolverConsumerJobWithPropertyMap() throws InterruptedException { assertPropertyResolution((propertyValue, readPropertyValues, latch) -> starter.start(createJobFromPropertyResolverConsumer(readPropertyValues, latch), true, propertyMap(propertyValue))); }
@Test public void startAsynchPropertyResolverConsumerJobWithJobConfig() throws InterruptedException { assertPropertyResolution((propertyValue, readPropertyValues, latch) -> { createJobFromPropertyResolverConsumer(readPropertyValues, latch); starter.start(JobConfig.builder() .name(JOB_NAME) .property(PROPERTY_NAME, "" + propertyValue) .asynchronous(true).build()); }); }
@Test public void startSynchRunnable() throws InterruptedException { assertPropertyResolution((propertyValue, readPropertyValues, latch) -> starter.start(createJobFromRunnable(readPropertyValues, latch), false, propertyMap(propertyValue))); }
@Test public void startAsynchStepExecutionConsumer() throws InterruptedException { assertPropertyResolution((propertyValue, readPropertyValues, latch) -> starter.start(createJobFromStepExecutionConsumer(readPropertyValues, latch), true, propertyMap(propertyValue))); }