From c75b57d9fa94507118610d33fb34e5b8bbefd13a Mon Sep 17 00:00:00 2001 From: Shubhra Date: Tue, 11 Feb 2020 10:16:20 +0530 Subject: [PATCH] BAEL-3298 Using @MockBean --- .../batch/SpringBatchRetryConfig.java | 9 +++-- .../SpringBatchRetryIntegrationTest.java | 38 +++++-------------- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchRetryConfig.java b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchRetryConfig.java index 97f1eff3ea..56088f194b 100644 --- a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchRetryConfig.java +++ b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchRetryConfig.java @@ -36,7 +36,6 @@ import java.text.ParseException; public class SpringBatchRetryConfig { private static final String[] tokens = { "username", "userid", "transactiondate", "amount" }; - private static final int TWO_SECONDS = 2000; @Autowired @@ -66,7 +65,9 @@ public class SpringBatchRetryConfig { @Bean public CloseableHttpClient closeableHttpClient() { - final RequestConfig config = RequestConfig.custom().setConnectTimeout(TWO_SECONDS).build(); + final RequestConfig config = RequestConfig.custom() + .setConnectTimeout(TWO_SECONDS) + .build(); return HttpClientBuilder.create().setDefaultRequestConfig(config).build(); } @@ -92,8 +93,8 @@ public class SpringBatchRetryConfig { } @Bean - public Step retryStep(@Qualifier("retryItemProcessor") ItemProcessor processor - , ItemWriter writer) throws ParseException { + public Step retryStep(@Qualifier("retryItemProcessor") ItemProcessor processor, + ItemWriter writer) throws ParseException { return stepBuilderFactory.get("retryStep") .chunk(10) .reader(itemReader(inputCsv)) diff --git a/spring-batch/src/test/java/org/baeldung/batch/SpringBatchRetryIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/batch/SpringBatchRetryIntegrationTest.java index 76e04dd5a6..4903185d17 100644 --- a/spring-batch/src/test/java/org/baeldung/batch/SpringBatchRetryIntegrationTest.java +++ b/spring-batch/src/test/java/org/baeldung/batch/SpringBatchRetryIntegrationTest.java @@ -4,13 +4,8 @@ import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; -import org.baeldung.batch.service.RetryItemProcessor; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobInstance; @@ -21,14 +16,10 @@ import org.springframework.batch.test.JobLauncherTestUtils; import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.core.io.FileSystemResource; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; -import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.Matchers.is; @@ -40,34 +31,24 @@ import static org.mockito.Mockito.when; @SpringBatchTest @EnableAutoConfiguration @ContextConfiguration(classes = { SpringBatchRetryConfig.class }) -@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class }) -@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public class SpringBatchRetryIntegrationTest { private static final String TEST_OUTPUT = "xml/retryOutput.xml"; - private static final String EXPECTED_OUTPUT = "src/test/resources/output/batchRetry/retryOutput.xml"; @Autowired private JobLauncherTestUtils jobLauncherTestUtils; - @Mock + @MockBean private CloseableHttpClient closeableHttpClient; - @Mock + @MockBean private CloseableHttpResponse httpResponse; - @InjectMocks - private RetryItemProcessor retryItemProcessor; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - } - @Test public void whenEndpointAlwaysFailing_thenJobFails() throws Exception { - when(closeableHttpClient.execute(any())).thenThrow(new ConnectTimeoutException("Endpoint is down")); + when(closeableHttpClient.execute(any())) + .thenThrow(new ConnectTimeoutException("Endpoint is down")); JobExecution jobExecution = jobLauncherTestUtils.launchJob(defaultJobParameters()); JobInstance actualJobInstance = jobExecution.getJobInstance(); @@ -84,11 +65,12 @@ public class SpringBatchRetryIntegrationTest { FileSystemResource actualResult = new FileSystemResource(TEST_OUTPUT); //fails for first two calls and passes third time onwards - when(httpResponse.getEntity()).thenReturn(new StringEntity("{ \"age\":10, \"postCode\":\"430222\" }")); + when(httpResponse.getEntity()) + .thenReturn(new StringEntity("{ \"age\":10, \"postCode\":\"430222\" }")); when(closeableHttpClient.execute(any())) - .thenThrow(new ConnectTimeoutException("Timeout count 1")) - .thenThrow(new ConnectTimeoutException("Timeout count 2")) - .thenReturn(httpResponse); + .thenThrow(new ConnectTimeoutException("Timeout count 1")) + .thenThrow(new ConnectTimeoutException("Timeout count 2")) + .thenReturn(httpResponse); JobExecution jobExecution = jobLauncherTestUtils.launchJob(defaultJobParameters()); JobInstance actualJobInstance = jobExecution.getJobInstance();