SpringBatchTest多个测试类-抛出InstanceAlreadyExistsException

问题描述 投票:0回答:1

我正在使用@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
   // ...
}
}

[TestClass2TestClass1相同,只是数据准备和声明不同。

同样,我的测试属性如下:

# Spring Boot configuration
spring.main.allow-bean-definition-overriding=true
spring.batch.job.enabled=false
# Spring Batch configuration
spring.batch.job.names=myBatchJob

我已经尝试过将truefalse的所有组合用于先前的标志,但是没有任何区别。

我正在使用@SpringBatchTest在我的Spring Batch应用程序上运行e2e测试。一切正常,除非同时运行两个测试类(将测试分为正/负测试类)...

spring-boot spring-batch spring-test spring-boot-test
1个回答
0
投票

由于已经启动,因此测试在InstanceAlreadyExistsException上失败。

© www.soinside.com 2019 - 2024. All rights reserved.