我正在使用@SpringBatchTest
在我的Spring Batch应用程序上运行e2e测试。除非我同时运行两个测试类(将我的测试分为正/负测试类),否则一切都正常。第一个运行并通过测试,但是第二个尝试再次启动上下文失败。由于已经启动,因此测试在InstanceAlreadyExistsException
上失败。
我的两个测试类都带有以下注释:
@RunWith(SpringRunner.class) @SpringBatchTest @EnableAutoConfiguration @ContextConfiguration(classes = {MyTestConfiguration.class}) @TestExecutionListeners({MockitoTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
编辑:
通常,我的测试是:
@RunWith(SpringRunner.class) @SpringBatchTest @EnableAutoConfiguration @ContextConfiguration(classes = {HardDeleteTestConfiguration.class}) @TestExecutionListeners({MockitoTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class TestClass1 { @Autowired private JobLauncherTestUtils jobLauncherTestUtils; @Autowired private JobRepositoryTestUtils jobRepositoryTestUtils; @Before public void setUp() { jobRepositoryTestUtils.removeJobExecutions(); } @Test public void SpringBatchTest() { // preparing data for test // ... JobExecution jobExecution = jobLauncherTestUtils.launchJob(); // Perform assertions // ... } }
[
TestClass2
与TestClass1
相同,只是数据准备和声明不同。
同样,我的测试属性如下:
# Spring Boot configuration spring.main.allow-bean-definition-overriding=true spring.batch.job.enabled=false # Spring Batch configuration spring.batch.job.names=myBatchJob
我已经尝试过将
true
和false
的所有组合用于先前的标志,但是没有任何区别。
我正在使用@SpringBatchTest在我的Spring Batch应用程序上运行e2e测试。一切正常,除非同时运行两个测试类(将测试分为正/负测试类)...
由于已经启动,因此测试在InstanceAlreadyExistsException上失败。