У меня есть launch-context.xml, который определяет 7 разных заданий, все из которых имеют один и тот же родительский элемент. У них есть имена вроде «jobA», «jobB» и т. Д.Квалификация задания для работы с JobLauncherTestUtils не работает
Я пробовал:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/launch-context.xml", "/OurBatchKernelTestConfig.xml" })
public class AllTest extends BaseRaptorBatchTest {
@Autowired
private JobLauncherTestUtils utils;
@Autowired
@Qualifier(value="jobA")
private Job job;
@Test
public void testLaunch() {
Properties p = new Properties(); // then I set these up.
JobExecution je = utils.launchJob(paraCvter.getJobParameters(p));
}
}
Это не работает.
я получаю исключение, как:
STDOUT [WARN ] [2015.04.15 11:14:42] support.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobLauncherTestUtilsForSnapshot': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.batch.test.JobLauncherTestUtils.setJob(org.springframework.batch.core.Job); nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.batch.core.Job] is defined: expected single matching bean but found 2: coverageRuleBatch,generateMetricsSnapshotJob
Я также попытался:
https://stackoverflow.com/a/29658577/869809
и я попробовал:
https://stackoverflow.com/a/36352437/869809
Ни одна из этих работ.
Я могу создать копию моего файла launch-content.xml и удалить другие задания. Затем я говорю об этом в аннотации, и все хорошо. Но мне тогда нужны 7 разных xml-файлов. Ик.
Итак, сначала я хотел использовать экземпляр JobLauncherTestUtils с автоподключением и вызвать setJob на нем с желаемым заданием. Но автоматическая проводка задания ivar с помощью @Qualifier (value = "jobA") не работала. –
Во-вторых, я попытался использовать подкласс класса JobLauncherTestUtils, который включал в себя набор моей работы. Это тоже не сработало. –
На самом деле вы предлагаете то же самое решение, что и в http://stackoverflow.com/a/36352437/869809, которое я привел выше. Это не сработало. –