Uncomment tests for Single Step File writer

This commit is contained in:
Glenn Renfro
2022-06-01 16:49:24 -04:00
parent f8bd78b466
commit 73c1ae693c

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.task.batch.autoconfigure.flatfile;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -26,16 +27,32 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.explore.JobExplorer;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.item.file.FlatFileFooterCallback;
import org.springframework.batch.item.file.FlatFileHeaderCallback;
import org.springframework.batch.item.file.FlatFileItemWriter;
import org.springframework.batch.item.file.transform.FieldExtractor;
import org.springframework.batch.item.file.transform.LineAggregator;
import org.springframework.batch.item.file.transform.PassThroughLineAggregator;
import org.springframework.batch.item.support.ListItemReader;
import org.springframework.batch.test.AssertFile;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cloud.task.batch.autoconfigure.SingleStepJobAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.FileCopyUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
@@ -117,267 +134,267 @@ public class FlatFileItemWriterAutoConfigurationTests {
}
}
// @Test
// public void testDelimitedFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(DelimitedJobConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class, DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-16",
// "spring.batch.job.flatfileitemwriter.saveState=false",
// "spring.batch.job.flatfileitemwriter.shouldDeleteIfEmpty=true",
// "spring.batch.job.flatfileitemwriter.delimited=true",
// "spring.batch.job.flatfileitemwriter.names=item",
// "spring.batch.job.flatfileitemwriter.append=true",
// "spring.batch.job.flatfileitemwriter.forceSync=true",
// "spring.batch.job.flatfileitemwriter.shouldDeleteIfExists=false",
// "spring.batch.job.flatfileitemwriter.transactional=false");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// FlatFileItemWriter writer = context.getBean(FlatFileItemWriter.class);
//
// AssertFile.assertLineCount(3, this.outputFile);
// AssertFile.assertFileEquals(new ClassPathResource("writerTestUTF16.txt"),
// new FileSystemResource(this.outputFile));
//
// assertThat((Boolean) ReflectionTestUtils.getField(writer, "saveState"))
// .isFalse();
// assertThat((Boolean) ReflectionTestUtils.getField(writer, "append")).isTrue();
// assertThat((Boolean) ReflectionTestUtils.getField(writer, "forceSync"))
// .isTrue();
// assertThat((Boolean) ReflectionTestUtils.getField(writer,
// "shouldDeleteIfExists")).isFalse();
// assertThat((Boolean) ReflectionTestUtils.getField(writer, "transactional"))
// .isFalse();
// });
// }
@Test
public void testDelimitedFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(DelimitedJobConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class, DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-16",
"spring.batch.job.flatfileitemwriter.saveState=false",
"spring.batch.job.flatfileitemwriter.shouldDeleteIfEmpty=true",
"spring.batch.job.flatfileitemwriter.delimited=true",
"spring.batch.job.flatfileitemwriter.names=item",
"spring.batch.job.flatfileitemwriter.append=true",
"spring.batch.job.flatfileitemwriter.forceSync=true",
"spring.batch.job.flatfileitemwriter.shouldDeleteIfExists=false",
"spring.batch.job.flatfileitemwriter.transactional=false");
// @Test
// public void testFormattedFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(FormattedJobConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class,
// DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=2",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-8",
// "spring.batch.job.flatfileitemwriter.formatted=true",
// "spring.batch.job.flatfileitemwriter.names=item",
// "spring.batch.job.flatfileitemwriter.format=item = %s",
// "spring.batch.job.flatfileitemwriter.minimumLength=8",
// "spring.batch.job.flatfileitemwriter.maximumLength=10");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// AssertFile.assertLineCount(2, this.outputFile);
//
// String results = FileCopyUtils.copyToString(new InputStreamReader(
// new FileSystemResource(this.outputFile).getInputStream()));
// assertThat(results).isEqualTo("item = foo\nitem = bar\n");
// });
// }
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
// @Test
// public void testFormattedFieldExtractorFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(FormattedFieldExtractorJobConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class,
// DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-8",
// "spring.batch.job.flatfileitemwriter.formatted=true",
// "spring.batch.job.flatfileitemwriter.names=item",
// "spring.batch.job.flatfileitemwriter.format=item = %s");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// AssertFile.assertLineCount(3, this.outputFile);
//
// String results = FileCopyUtils.copyToString(new InputStreamReader(
// new FileSystemResource(this.outputFile).getInputStream()));
// assertThat(results).isEqualTo("item = f\nitem = b\nitem = b\n");
// });
// }
Job job = context.getBean(Job.class);
// @Test
// public void testFieldExtractorFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(FieldExtractorConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class,
// DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-8",
// "spring.batch.job.flatfileitemwriter.delimited=true");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// AssertFile.assertLineCount(3, this.outputFile);
//
// String results = FileCopyUtils.copyToString(new InputStreamReader(
// new FileSystemResource(this.outputFile).getInputStream()));
// assertThat(results).isEqualTo("f\nb\nb\n");
// });
// }
//
// @Test
// public void testCustomLineAggregatorFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(LineAggregatorConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class,
// DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-8");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// AssertFile.assertLineCount(3, this.outputFile);
//
// String results = FileCopyUtils.copyToString(new InputStreamReader(
// new FileSystemResource(this.outputFile).getInputStream()));
// assertThat(results).isEqualTo("{item=foo}\n{item=bar}\n{item=baz}\n");
// });
// }
//
// @Test
// public void testHeaderFooterFileGeneration() {
// ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
// .withUserConfiguration(HeaderFooterConfiguration.class)
// .withConfiguration(
// AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
// BatchAutoConfiguration.class,
// SingleStepJobAutoConfiguration.class,
// FlatFileItemWriterAutoConfiguration.class,
// DataSourceAutoConfiguration.class))
// .withPropertyValues("spring.batch.job.jobName=job",
// "spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
// "spring.batch.job.flatfileitemwriter.name=fooWriter",
// String.format(
// "spring.batch.job.flatfileitemwriter.resource=file://%s",
// this.outputFile.getAbsolutePath()),
// "spring.batch.job.flatfileitemwriter.encoding=UTF-8",
// "spring.batch.job.flatfileitemwriter.delimited=true",
// "spring.batch.job.flatfileitemwriter.names=item");
//
// applicationContextRunner.run((context) -> {
// JobLauncher jobLauncher = context.getBean(JobLauncher.class);
//
// Job job = context.getBean(Job.class);
//
// JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
//
// JobExplorer jobExplorer = context.getBean(JobExplorer.class);
//
// while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
// Thread.sleep(1000);
// }
//
// AssertFile.assertLineCount(5, this.outputFile);
//
// String results = FileCopyUtils.copyToString(new InputStreamReader(
// new FileSystemResource(this.outputFile).getInputStream()));
// assertThat(results).isEqualTo("header\nfoo\nbar\nbaz\nfooter");
// });
// }
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
FlatFileItemWriter writer = context.getBean(FlatFileItemWriter.class);
AssertFile.assertLineCount(3, this.outputFile);
AssertFile.assertFileEquals(new ClassPathResource("writerTestUTF16.txt"),
new FileSystemResource(this.outputFile));
assertThat((Boolean) ReflectionTestUtils.getField(writer, "saveState"))
.isFalse();
assertThat((Boolean) ReflectionTestUtils.getField(writer, "append")).isTrue();
assertThat((Boolean) ReflectionTestUtils.getField(writer, "forceSync"))
.isTrue();
assertThat((Boolean) ReflectionTestUtils.getField(writer,
"shouldDeleteIfExists")).isFalse();
assertThat((Boolean) ReflectionTestUtils.getField(writer, "transactional"))
.isFalse();
});
}
@Test
public void testFormattedFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(FormattedJobConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class,
DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=2",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-8",
"spring.batch.job.flatfileitemwriter.formatted=true",
"spring.batch.job.flatfileitemwriter.names=item",
"spring.batch.job.flatfileitemwriter.format=item = %s",
"spring.batch.job.flatfileitemwriter.minimumLength=8",
"spring.batch.job.flatfileitemwriter.maximumLength=10");
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
AssertFile.assertLineCount(2, this.outputFile);
String results = FileCopyUtils.copyToString(new InputStreamReader(
new FileSystemResource(this.outputFile).getInputStream()));
assertThat(results).isEqualTo("item = foo\nitem = bar\n");
});
}
@Test
public void testFormattedFieldExtractorFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(FormattedFieldExtractorJobConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class,
DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-8",
"spring.batch.job.flatfileitemwriter.formatted=true",
"spring.batch.job.flatfileitemwriter.names=item",
"spring.batch.job.flatfileitemwriter.format=item = %s");
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
AssertFile.assertLineCount(3, this.outputFile);
String results = FileCopyUtils.copyToString(new InputStreamReader(
new FileSystemResource(this.outputFile).getInputStream()));
assertThat(results).isEqualTo("item = f\nitem = b\nitem = b\n");
});
}
@Test
public void testFieldExtractorFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(FieldExtractorConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class,
DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-8",
"spring.batch.job.flatfileitemwriter.delimited=true");
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
AssertFile.assertLineCount(3, this.outputFile);
String results = FileCopyUtils.copyToString(new InputStreamReader(
new FileSystemResource(this.outputFile).getInputStream()));
assertThat(results).isEqualTo("f\nb\nb\n");
});
}
@Test
public void testCustomLineAggregatorFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(LineAggregatorConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class,
DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-8");
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
AssertFile.assertLineCount(3, this.outputFile);
String results = FileCopyUtils.copyToString(new InputStreamReader(
new FileSystemResource(this.outputFile).getInputStream()));
assertThat(results).isEqualTo("{item=foo}\n{item=bar}\n{item=baz}\n");
});
}
@Test
public void testHeaderFooterFileGeneration() {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withUserConfiguration(HeaderFooterConfiguration.class)
.withConfiguration(
AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
BatchAutoConfiguration.class,
SingleStepJobAutoConfiguration.class,
FlatFileItemWriterAutoConfiguration.class,
DataSourceAutoConfiguration.class))
.withPropertyValues("spring.batch.job.jobName=job",
"spring.batch.job.stepName=step1", "spring.batch.job.chunkSize=5",
"spring.batch.job.flatfileitemwriter.name=fooWriter",
String.format(
"spring.batch.job.flatfileitemwriter.resource=file://%s",
this.outputFile.getAbsolutePath()),
"spring.batch.job.flatfileitemwriter.encoding=UTF-8",
"spring.batch.job.flatfileitemwriter.delimited=true",
"spring.batch.job.flatfileitemwriter.names=item");
applicationContextRunner.run((context) -> {
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
while (jobExplorer.getJobExecution(jobExecution.getJobId()).isRunning()) {
Thread.sleep(1000);
}
AssertFile.assertLineCount(5, this.outputFile);
String results = FileCopyUtils.copyToString(new InputStreamReader(
new FileSystemResource(this.outputFile).getInputStream()));
assertThat(results).isEqualTo("header\nfoo\nbar\nbaz\nfooter");
});
}
@Configuration
@EnableBatchProcessing