diff --git a/spring-batch-samples/.springBeans b/spring-batch-samples/.springBeans index ce943fa31..77ce05a70 100644 --- a/spring-batch-samples/.springBeans +++ b/spring-batch-samples/.springBeans @@ -18,14 +18,12 @@ src/main/resources/jobs/adhocLoopJob.xml src/main/resources/jobs/infiniteLoopJob.xml src/main/resources/data-source-context-init.xml - src/main/resources/jobs/hibernateJob.xml src/main/resources/jobs/ibatisJob.xml src/main/resources/jobs/footballJob.xml src/main/resources/jobs/delegatingJob.xml src/main/resources/jobs/parallelJob.xml src/main/resources/jobs/retrySample.xml src/main/resources/simple-job-launcher-context.xml - src/main/resources/jobs/batchUpdateJob.xml src/main/resources/adhoc-job-launcher-context.xml src/main/resources/alt-data-source-context.xml src/main/resources/quartz-job-launcher-context.xml @@ -49,6 +47,7 @@ src/main/resources/jobs/iosample/multiRecordType.xml src/main/resources/jobs/iosample/multiResource.xml src/main/resources/jobs/iosample/xml.xml + src/main/resources/jobs/iosample/hibernate.xml @@ -205,7 +204,6 @@ src/main/resources/data-source-context.xml src/main/resources/data-source-context-init.xml - src/main/resources/jobs/batchUpdateJob.xml src/main/resources/simple-job-launcher-context.xml src/main/resources/org/springframework/batch/sample/config/common-context.xml @@ -289,7 +287,6 @@ false src/main/resources/data-source-context.xml - src/main/resources/jobs/hibernateJob.xml src/main/resources/simple-job-launcher-context.xml src/main/resources/org/springframework/batch/sample/config/common-context.xml src/main/resources/hibernate-context.xml diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/CustomerCreditIncreaseProcessor.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/CustomerCreditIncreaseProcessor.java index 7c686cfa1..8c5f4c565 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/CustomerCreditIncreaseProcessor.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/CustomerCreditIncreaseProcessor.java @@ -12,7 +12,7 @@ import org.springframework.batch.sample.domain.trade.CustomerCredit; */ public class CustomerCreditIncreaseProcessor implements ItemProcessor { - public static final BigDecimal FIXED_AMOUNT = new BigDecimal("1000"); + public static final BigDecimal FIXED_AMOUNT = new BigDecimal("5"); public CustomerCredit process(CustomerCredit item) throws Exception { return item.increaseCreditBy(FIXED_AMOUNT); diff --git a/spring-batch-samples/src/main/resources/data/iosample/input/delimited.csv b/spring-batch-samples/src/main/resources/data/iosample/input/delimited.csv index a39b2d4b8..8c8c3989e 100644 --- a/spring-batch-samples/src/main/resources/data/iosample/input/delimited.csv +++ b/spring-batch-samples/src/main/resources/data/iosample/input/delimited.csv @@ -1,6 +1,6 @@ -UK21341EAH45,978,98.34,customer1 -UK21341EAH46,112,18.12,customer2 -UK21341EAH47,245,12.78,customer3 -UK21341EAH48,108,109.25,customer4 -UK21341EAH49,854,123.39,customer5 -UK21341EAH50,234,32.45,customer6 +customer1,10 +customer2,20 +customer3,30 +customer4,40 +customer5,50 +customer6,60 \ No newline at end of file diff --git a/spring-batch-samples/src/main/resources/data/iosample/input/delimited2.csv b/spring-batch-samples/src/main/resources/data/iosample/input/delimited2.csv index d1d68d574..59bce0497 100644 --- a/spring-batch-samples/src/main/resources/data/iosample/input/delimited2.csv +++ b/spring-batch-samples/src/main/resources/data/iosample/input/delimited2.csv @@ -1,2 +1,2 @@ -UK21341EAH51,643,594.23,customer7 -UK21341EAH52,393,65.21,customer8 +customer7,70 +customer8,80 \ No newline at end of file diff --git a/spring-batch-samples/src/main/resources/data/iosample/input/fixedLength.txt b/spring-batch-samples/src/main/resources/data/iosample/input/fixedLength.txt index c31971514..a22f8e7aa 100644 --- a/spring-batch-samples/src/main/resources/data/iosample/input/fixedLength.txt +++ b/spring-batch-samples/src/main/resources/data/iosample/input/fixedLength.txt @@ -1,6 +1,6 @@ -UK21341EAH45978 98.34customer1 -UK21341EAH46112 18.12customer2 -UK21341EAH47245 12.78customer3 -UK21341EAH48108109.25customer4 -UK21341EAH49854123.39customer5 -UK21341EAH50234 32.45customer6 +customer110 +customer220 +customer330 +customer440 +customer550 +customer660 \ No newline at end of file diff --git a/spring-batch-samples/src/main/resources/data/iosample/input/input.xml b/spring-batch-samples/src/main/resources/data/iosample/input/input.xml index 8330402e8..41bd56fb9 100644 --- a/spring-batch-samples/src/main/resources/data/iosample/input/input.xml +++ b/spring-batch-samples/src/main/resources/data/iosample/input/input.xml @@ -1,39 +1,23 @@ - - - UK21341EAH45 - 978 - 98.34 - customer1 - - - UK21341EAH46 - 112 - 18.12 - customer2 - - - UK21341EAH47 - 245 - 12.78 - customer3 - - - UK21341EAH48 - 108 - 109.25 - customer4 - - - UK21341EAH49 - 854 - 123.39 - customer5 - - - UK21341EAH50 - 234 - 32.45 - customer6 - - + + + customer1 + 10 + + + customer2 + 20 + + + customer3 + 30 + + + customer4 + 40 + + + customer5 + 50 + + \ No newline at end of file diff --git a/spring-batch-samples/src/main/resources/jobs/batchUpdateJob.xml b/spring-batch-samples/src/main/resources/jobs/batchUpdateJob.xml deleted file mode 100644 index 26517580c..000000000 --- a/spring-batch-samples/src/main/resources/jobs/batchUpdateJob.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Example for SQL Batch Update integration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-batch-samples/src/main/resources/jobs/ioSampleJob.xml b/spring-batch-samples/src/main/resources/jobs/ioSampleJob.xml index 39237c544..dfe64ac15 100644 --- a/spring-batch-samples/src/main/resources/jobs/ioSampleJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/ioSampleJob.xml @@ -17,6 +17,9 @@ + + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/delimited.xml b/spring-batch-samples/src/main/resources/jobs/iosample/delimited.xml index a38f98f8b..45196b0f7 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/delimited.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/delimited.xml @@ -18,27 +18,34 @@ + - + + + - + - + + + + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/fixedLength.xml b/spring-batch-samples/src/main/resources/jobs/iosample/fixedLength.xml index 815b9f8ac..b0730c430 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/fixedLength.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/fixedLength.xml @@ -1,9 +1,7 @@ - - + + + - + + + - + - + - - + + - + + + + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/hibernate.xml b/spring-batch-samples/src/main/resources/jobs/iosample/hibernate.xml new file mode 100644 index 000000000..cee706487 --- /dev/null +++ b/spring-batch-samples/src/main/resources/jobs/iosample/hibernate.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml b/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml index e83ce038f..e3cedda39 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml @@ -19,16 +19,13 @@ - - - - - - - - - + + + + + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/multiLine.xml b/spring-batch-samples/src/main/resources/jobs/iosample/multiLine.xml index 53f3e435a..e93244550 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/multiLine.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/multiLine.xml @@ -1,27 +1,39 @@ - - + + + + + + + + + + + + - + - + - + @@ -29,12 +41,15 @@ - + - + - + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/multiRecordType.xml b/spring-batch-samples/src/main/resources/jobs/iosample/multiRecordType.xml index da6ad91d3..1cc4e88d8 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/multiRecordType.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/multiRecordType.xml @@ -1,9 +1,7 @@ - - - - - - + + + + + + - + + + + + + + + + + + @@ -30,17 +39,20 @@ - - - + + + - - - - + + + + - - + + @@ -49,35 +61,43 @@ - - + + - + - - - + + + - + - - + + - + - + - - + + - + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/multiResource.xml b/spring-batch-samples/src/main/resources/jobs/iosample/multiResource.xml index 2cfedd7c8..b804d9dcb 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/multiResource.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/multiResource.xml @@ -1,9 +1,7 @@ - + - - - - - - - - - + + + + + + + + + + + + + + + - - - + - - + + - + - + - - + + - - + + diff --git a/spring-batch-samples/src/main/resources/jobs/iosample/xml.xml b/spring-batch-samples/src/main/resources/jobs/iosample/xml.xml index c3eef37e9..2c80f2882 100644 --- a/spring-batch-samples/src/main/resources/jobs/iosample/xml.xml +++ b/spring-batch-samples/src/main/resources/jobs/iosample/xml.xml @@ -1,9 +1,7 @@ - + - + - - - + + + - - + + - - - - - + + + + + + + diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/HibernateJobFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/HibernateJobFunctionalTests.java deleted file mode 100644 index 245554a20..000000000 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/HibernateJobFunctionalTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.springframework.batch.sample; - -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * Test for HibernateJob - checks that customer credit has been updated to expected value. - * - * @author Robert Kasanicky - */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration() -public class HibernateJobFunctionalTests extends AbstractCustomerCreditIncreaseTests { - -} diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/JdbcBatchJobFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/JdbcBatchJobFunctionalTests.java deleted file mode 100644 index 5fe58328c..000000000 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/JdbcBatchJobFunctionalTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.springframework.batch.sample; - -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * Test for JdbcBatchItemWriterJob - checks that customer credit has been updated to expected value. - * - * @author Robert Kasanicky - */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration -public class JdbcBatchJobFunctionalTests extends AbstractCustomerCreditIncreaseTests { - -} diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/AbstractIoSampleTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/AbstractIoSampleTests.java new file mode 100644 index 000000000..74d8ddaf6 --- /dev/null +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/AbstractIoSampleTests.java @@ -0,0 +1,99 @@ +package org.springframework.batch.sample.iosample; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.springframework.batch.core.BatchStatus; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.ItemStream; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.batch.sample.domain.trade.internal.CustomerCreditIncreaseProcessor; +import org.springframework.batch.test.AbstractJobTests; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Base class for IoSample tests that increase input customer credit by fixed + * amount. Assumes inputs and outputs are in the same format and uses the job's + * {@link ItemReader} to parse the outputs. + * + * @author Robert Kasanicky + */ +public abstract class AbstractIoSampleTests extends AbstractJobTests { + + @Autowired + private ItemReader reader; + + /** + * Check the resulting credits correspond to inputs increased by fixed + * amount. + */ + @Test + public void testUpdateCredit() throws Exception { + + open(reader); + List inputs = getCredits(reader); + close(reader); + + JobExecution jobExecution = this.launchJob(); + assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); + + pointReaderToOutput(reader); + open(reader); + List outputs = getCredits(reader); + close(reader); + + assertEquals(inputs.size(), outputs.size()); + int itemCount = inputs.size(); + assertTrue(itemCount > 0); + + for (int i = 0; i < itemCount; i++) { + assertEquals(inputs.get(i).getCredit().add(CustomerCreditIncreaseProcessor.FIXED_AMOUNT).intValue(), + outputs.get(i).getCredit().intValue()); + } + + } + + /** + * Configure the reader to read outputs (if necessary). Required for + * file-to-file jobs jobs, usually no-op for database jobs where inputs are + * updated (rather than outputs created). + */ + protected abstract void pointReaderToOutput(ItemReader reader); + + /** + * Read all credits using the provided reader. + */ + private List getCredits(ItemReader reader) throws Exception { + CustomerCredit credit; + List result = new ArrayList(); + while ((credit = reader.read()) != null) { + result.add(credit); + } + return result; + + } + + /** + * Open the reader if applicable. + */ + private void open(ItemReader reader) { + if (reader instanceof ItemStream) { + ((ItemStream) reader).open(new ExecutionContext()); + } + } + + /** + * Close the reader if applicable. + */ + private void close(ItemReader reader) { + if (reader instanceof ItemStream) { + ((ItemStream) reader).close(); + } + } + +} diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/DelimitedFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/DelimitedFunctionalTests.java index cb48259ae..03a7e8e3f 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/DelimitedFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/DelimitedFunctionalTests.java @@ -16,11 +16,12 @@ package org.springframework.batch.sample.iosample; -import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.batch.test.AbstractJobTests; -import org.springframework.batch.test.AssertFile; -import org.springframework.core.io.FileSystemResource; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.file.FlatFileItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -31,17 +32,15 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", "/jobs/iosample/delimited.xml" }) -public class DelimitedFunctionalTests extends AbstractJobTests { +public class DelimitedFunctionalTests extends AbstractIoSampleTests { - private static final String OUTPUT_FILE = "target/test-outputs/delimitedOutput.csv"; - private static final String INPUT_FILE = "src/main/resources/data/iosample/input/delimited.csv"; - - /** - * Output should be the same as input - */ - @Test - public void testJob() throws Exception { - this.launchJob(); - AssertFile.assertFileEquals(new FileSystemResource(OUTPUT_FILE), new FileSystemResource(INPUT_FILE)); + @Autowired + private Resource outputResource; + + @Override + protected void pointReaderToOutput(ItemReader reader) { + FlatFileItemReader fileReader = (FlatFileItemReader) reader; + fileReader.setResource(outputResource); } + } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/FixedLengthFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/FixedLengthFunctionalTests.java index e010a01b3..214e7955d 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/FixedLengthFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/FixedLengthFunctionalTests.java @@ -16,28 +16,26 @@ package org.springframework.batch.sample.iosample; -import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.batch.test.AbstractJobTests; -import org.springframework.batch.test.AssertFile; -import org.springframework.core.io.FileSystemResource; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.file.FlatFileItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", "/jobs/iosample/fixedLength.xml" }) -public class FixedLengthFunctionalTests extends AbstractJobTests { +public class FixedLengthFunctionalTests extends AbstractIoSampleTests { - private static final String OUTPUT_FILE = "target/test-outputs/fixedLengthOutput.txt"; - private static final String INPUT_FILE = "src/main/resources/data/iosample/input/fixedLength.txt"; + @Autowired + private Resource outputResource; - /** - * Output should be the same as input - */ - @Test - public void testJob() throws Exception { - this.launchJob(); - AssertFile.assertFileEquals(new FileSystemResource(OUTPUT_FILE), new FileSystemResource(INPUT_FILE)); + @Override + protected void pointReaderToOutput(ItemReader reader) { + FlatFileItemReader fileReader = (FlatFileItemReader) reader; + fileReader.setResource(outputResource); } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/HibernateFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/HibernateFunctionalTests.java new file mode 100644 index 000000000..9a5805e00 --- /dev/null +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/HibernateFunctionalTests.java @@ -0,0 +1,19 @@ +package org.springframework.batch.sample.iosample; + +import org.junit.runner.RunWith; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/hibernate-context.xml", + "/jobs/ioSampleJob.xml", "/jobs/iosample/hibernate.xml" }) +public class HibernateFunctionalTests extends AbstractIoSampleTests { + + @Override + protected void pointReaderToOutput(ItemReader reader) { + // no-op + } + +} diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/JdbcCursorFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/JdbcCursorFunctionalTests.java index 0f768988f..cb8764a4b 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/JdbcCursorFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/JdbcCursorFunctionalTests.java @@ -16,18 +16,11 @@ package org.springframework.batch.sample.iosample; -import static org.junit.Assert.assertEquals; - -import javax.sql.DataSource; - -import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.batch.test.AbstractJobTests; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.jdbc.SimpleJdbcTestUtils; /** * @author Dan Garrette @@ -36,28 +29,11 @@ import org.springframework.test.jdbc.SimpleJdbcTestUtils; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", "/jobs/iosample/jdbcCursor.xml" }) -public class JdbcCursorFunctionalTests extends AbstractJobTests { +public class JdbcCursorFunctionalTests extends AbstractIoSampleTests { - private SimpleJdbcTemplate simpleJdbcTemplate; - - @Autowired - public void setDataSource(DataSource dataSource) { - this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); + @Override + protected void pointReaderToOutput(ItemReader reader) { + // no-op } - /** - * Output should be the same as input - */ - @Test - public void testJob() throws Exception { - this.simpleJdbcTemplate.update("delete from TRADE"); - - this.launchJob(); - - assertEquals(4, SimpleJdbcTestUtils.countRowsInTable(simpleJdbcTemplate, "TRADE")); - for (int i = 1; i <= 4; i++) { - String sql = "select count(*) from TRADE where CUSTOMER = ?"; - assertEquals(1, simpleJdbcTemplate.queryForInt(sql, "customer" + i)); - } - } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiLineFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiLineFunctionalTests.java index fe583814d..afd8020fd 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiLineFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiLineFunctionalTests.java @@ -29,11 +29,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @since 2.0 */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", - "/jobs/iosample/multiLine.xml" }) +@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/iosample/multiLine.xml" }) public class MultiLineFunctionalTests extends AbstractJobTests { private static final String OUTPUT_FILE = "target/test-outputs/multiLineOutput.txt"; + private static final String INPUT_FILE = "src/main/resources/data/iosample/input/multiLine.txt"; /** diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiRecordTypeFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiRecordTypeFunctionalTests.java index 84dcd7c97..bc2641177 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiRecordTypeFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiRecordTypeFunctionalTests.java @@ -29,11 +29,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @since 2.0 */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", - "/jobs/iosample/multiRecordType.xml" }) +@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/iosample/multiRecordType.xml" }) public class MultiRecordTypeFunctionalTests extends AbstractJobTests { private static final String OUTPUT_FILE = "target/test-outputs/multiRecordTypeOutput.txt"; + private static final String INPUT_FILE = "src/main/resources/data/iosample/input/multiRecordType.txt"; /** diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiResourceFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiResourceFunctionalTests.java index 0cc3d62ed..20cb31951 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiResourceFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/MultiResourceFunctionalTests.java @@ -16,11 +16,12 @@ package org.springframework.batch.sample.iosample; -import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.batch.test.AbstractJobTests; -import org.springframework.batch.test.AssertFile; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.file.MultiResourceItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -31,18 +32,15 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", "/jobs/iosample/multiResource.xml" }) -public class MultiResourceFunctionalTests extends AbstractJobTests { +public class MultiResourceFunctionalTests extends AbstractIoSampleTests { - /** - * Output should be the same as input - */ - @Test - public void testJob() throws Exception { - this.launchJob(); + @Override + protected void pointReaderToOutput(ItemReader reader) { + MultiResourceItemReader multiReader = (MultiResourceItemReader) reader; + multiReader.setResources(new Resource[] { + new FileSystemResource("target/test-outputs/multiResourceOutput.csv.1"), + new FileSystemResource("target/test-outputs/multiResourceOutput.csv.2") }); - AssertFile.assertFileEquals(new FileSystemResource("target/test-outputs/multiResourceOutput.csv.1"), - new FileSystemResource("src/main/resources/data/iosample/input/delimited.csv")); - AssertFile.assertFileEquals(new FileSystemResource("target/test-outputs/multiResourceOutput.csv.2"), - new FileSystemResource("src/main/resources/data/iosample/input/delimited2.csv")); } + } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/XmlFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/XmlFunctionalTests.java index 448d1617b..567e6d7f7 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/XmlFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/iosample/XmlFunctionalTests.java @@ -16,13 +16,12 @@ package org.springframework.batch.sample.iosample; -import java.io.FileReader; - -import org.custommonkey.xmlunit.XMLAssert; -import org.custommonkey.xmlunit.XMLUnit; -import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.batch.test.AbstractJobTests; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.xml.StaxEventItemReader; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -33,18 +32,16 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml", "/jobs/iosample/xml.xml" }) -public class XmlFunctionalTests extends AbstractJobTests { +public class XmlFunctionalTests extends AbstractIoSampleTests { - private static final String OUTPUT_FILE = "target/test-outputs/output.xml"; - private static final String INPUT_FILE = "src/main/resources/data/iosample/input/input.xml"; - - /** - * Output should be the same as input - */ - @Test - public void testJob() throws Exception { - this.launchJob(); - XMLUnit.setIgnoreWhitespace(true); - XMLAssert.assertXMLEqual(new FileReader(INPUT_FILE), new FileReader(OUTPUT_FILE)); + @Autowired + private Resource outputResource; + + @Override + protected void pointReaderToOutput(ItemReader reader) { + StaxEventItemReader xmlReader = (StaxEventItemReader) reader; + xmlReader.setResource(outputResource); } + + } diff --git a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/HibernateJobFunctionalTests-context.xml b/spring-batch-samples/src/test/resources/org/springframework/batch/sample/HibernateJobFunctionalTests-context.xml deleted file mode 100644 index a907d541b..000000000 --- a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/HibernateJobFunctionalTests-context.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/JdbcBatchJobFunctionalTests-context.xml b/spring-batch-samples/src/test/resources/org/springframework/batch/sample/JdbcBatchJobFunctionalTests-context.xml deleted file mode 100644 index decb1e3f0..000000000 --- a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/JdbcBatchJobFunctionalTests-context.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -