Jam*_*mes 4 java spring spring-test spring-batch spring-boot
我有一个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));
}
}
Run Code Online (Sandbox Code Playgroud)
尝试application.properties
使用以下内容在测试资源(例如src/main/resources)中创建文件:
spring.batch.job.enabled=false
Run Code Online (Sandbox Code Playgroud)
您需要确保集成测试读取.为此,您可能需要使用ConfigFileApplicationContextInitializer
这种方式:
@SpringApplicationConfiguration(classes = TestApplication.class,
initializers = ConfigFileApplicationContextInitializer.class)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2401 次 |
最近记录: |