繁体   English   中英

如何在执行测试时阻止我的 Spring Boot Batch 应用程序运行?

[英]How can I prevent my Spring Boot Batch application from running when executing test?

我有一个 Spring Boot Batch 应用程序,我正在针对它编写集成测试。 当我执行测试时,整个批处理应用程序都会运行。 如何只执行被测应用程序代码?

这是我的测试代码。 执行时,将运行整个批处理作业步骤(读取器、处理器和写入器)。 然后,测试运行。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = BatchApplication.class))
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
        StepScopeTestExecutionListener.class })
public class StepScopeTestExecutionListenerIntegrationTests {

    @Autowired
    private FlatFileItemReader<String> reader;

    @Rule
    public TemporaryFolder testFolder = new TemporaryFolder();

    public StepExecution getStepExection() {
        StepExecution execution = MetaDataInstanceFactory.createStepExecution();
        return execution;
    }

    @Test
    public void testGoodData() throws Exception {
       //some test code on one met
       File testFile = testFolder.newFile();

       PrintWriter writer = new PrintWriter(testFile, "UTF-8");
       writer.println("test");
       writer.close();
       reader.setResource(new FileSystemResource(testFile));
       reader.open(getStepExection().getExecutionContext());
       String test = reader.read();
       reader.close();
       assertThat("test", equalTo(test));
    }
}

尝试使用以下内容在测试资源(例如 src/main/resources)中创建application.properties文件:

spring.batch.job.enabled=false

您需要确保集成测试读取。 为此,您可能需要以这种方式使用ConfigFileApplicationContextInitializer

@SpringApplicationConfiguration(classes = TestApplication.class, 
         initializers = ConfigFileApplicationContextInitializer.class)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM