Skip to content

Commit 84fe1cc

Browse files
committed
Cleanup mockito tests by using extend with instead of legacy open mocks
1 parent 1b813f4 commit 84fe1cc

File tree

6 files changed

+65
-67
lines changed

6 files changed

+65
-67
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@
252252

253253
<dependency>
254254
<groupId>org.mockito</groupId>
255-
<artifactId>mockito-core</artifactId>
255+
<artifactId>mockito-junit-jupiter</artifactId>
256256
<version>5.20.0</version>
257257
<scope>test</scope>
258258
</dependency>

src/test/java/org/mybatis/spring/batch/MyBatisBatchItemWriterTest.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929

3030
import org.apache.ibatis.executor.BatchResult;
3131
import org.apache.ibatis.session.ExecutorType;
32-
import org.junit.jupiter.api.BeforeEach;
3332
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.extension.ExtendWith;
3434
import org.mockito.InjectMocks;
3535
import org.mockito.Mock;
3636
import org.mockito.Mockito;
37-
import org.mockito.MockitoAnnotations;
37+
import org.mockito.junit.jupiter.MockitoExtension;
3838
import org.mybatis.spring.SqlSessionTemplate;
3939
import org.mybatis.spring.batch.domain.Employee;
4040
import org.springframework.batch.infrastructure.item.Chunk;
@@ -44,6 +44,7 @@
4444
/**
4545
* @author Putthiphong Boonphong
4646
*/
47+
@ExtendWith(MockitoExtension.class)
4748
class MyBatisBatchItemWriterTest {
4849

4950
@Mock
@@ -52,11 +53,6 @@ class MyBatisBatchItemWriterTest {
5253
@InjectMocks
5354
private MyBatisBatchItemWriter<Employee> writer;
5455

55-
@BeforeEach
56-
void setUp() {
57-
MockitoAnnotations.openMocks(this);
58-
}
59-
6056
@Test
6157
void testZeroBatchResultShouldThrowException() {
6258
Chunk<Employee> employees = Chunk.of(new Employee(), new Employee());

src/test/java/org/mybatis/spring/batch/MyBatisCursorItemReaderTest.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,18 @@
2626
import org.apache.ibatis.session.SqlSession;
2727
import org.apache.ibatis.session.SqlSessionFactory;
2828
import org.assertj.core.api.Assertions;
29-
import org.junit.jupiter.api.BeforeEach;
3029
import org.junit.jupiter.api.Test;
30+
import org.junit.jupiter.api.extension.ExtendWith;
3131
import org.mockito.Mock;
3232
import org.mockito.Mockito;
33-
import org.mockito.MockitoAnnotations;
33+
import org.mockito.junit.jupiter.MockitoExtension;
3434
import org.springframework.batch.infrastructure.item.ExecutionContext;
3535
import org.springframework.batch.infrastructure.item.ItemStreamException;
3636

3737
/**
3838
* Tests for {@link MyBatisCursorItemReader}.
3939
*/
40+
@ExtendWith(MockitoExtension.class)
4041
class MyBatisCursorItemReaderTest {
4142

4243
@Mock
@@ -48,16 +49,10 @@ class MyBatisCursorItemReaderTest {
4849
@Mock
4950
private Cursor<Object> cursor;
5051

51-
@BeforeEach
52-
void setUp() {
53-
MockitoAnnotations.openMocks(this);
54-
}
55-
5652
@Test
5753
void testCloseOnFailing() throws Exception {
5854

5955
Mockito.when(this.sqlSessionFactory.openSession(ExecutorType.SIMPLE)).thenReturn(this.sqlSession);
60-
Mockito.when(this.cursor.iterator()).thenReturn(getFoos().iterator());
6156
Mockito.when(this.sqlSession.selectCursor("selectFoo", Collections.singletonMap("id", 1)))
6257
.thenThrow(new RuntimeException("error."));
6358

src/test/java/org/mybatis/spring/batch/builder/MyBatisBatchItemWriterBuilderTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@
3434
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
3535
import org.junit.jupiter.api.BeforeEach;
3636
import org.junit.jupiter.api.Test;
37+
import org.junit.jupiter.api.extension.ExtendWith;
3738
import org.mockito.Mock;
3839
import org.mockito.Mockito;
39-
import org.mockito.MockitoAnnotations;
40+
import org.mockito.junit.jupiter.MockitoExtension;
4041
import org.mybatis.spring.SqlSessionTemplate;
4142
import org.springframework.batch.infrastructure.item.Chunk;
4243

@@ -47,6 +48,7 @@
4748
*
4849
* @author Kazuki Shimizu
4950
*/
51+
@ExtendWith(MockitoExtension.class)
5052
class MyBatisBatchItemWriterBuilderTest {
5153

5254
@Mock
@@ -60,19 +62,17 @@ class MyBatisBatchItemWriterBuilderTest {
6062

6163
@BeforeEach
6264
void setUp() {
63-
MockitoAnnotations.openMocks(this);
64-
{
65-
var configuration = new Configuration();
66-
var environment = new Environment("unittest", new JdbcTransactionFactory(), dataSource);
67-
configuration.setEnvironment(environment);
68-
Mockito.when(this.sqlSessionFactory.getConfiguration()).thenReturn(configuration);
69-
Mockito.when(this.sqlSessionFactory.openSession(ExecutorType.BATCH)).thenReturn(this.sqlSession);
70-
}
71-
{
72-
var result = new BatchResult(null, null);
73-
result.setUpdateCounts(new int[] { 1 });
74-
Mockito.when(this.sqlSession.flushStatements()).thenReturn(Collections.singletonList(result));
75-
}
65+
66+
var configuration = new Configuration();
67+
var environment = new Environment("unittest", new JdbcTransactionFactory(), dataSource);
68+
configuration.setEnvironment(environment);
69+
Mockito.when(this.sqlSessionFactory.getConfiguration()).thenReturn(configuration);
70+
Mockito.when(this.sqlSessionFactory.openSession(ExecutorType.BATCH)).thenReturn(this.sqlSession);
71+
72+
var result = new BatchResult(null, null);
73+
result.setUpdateCounts(new int[] { 1 });
74+
Mockito.when(this.sqlSession.flushStatements()).thenReturn(Collections.singletonList(result));
75+
7676
}
7777

7878
@Test

src/test/java/org/mybatis/spring/batch/builder/MyBatisCursorItemReaderBuilderTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828
import org.assertj.core.api.Assertions;
2929
import org.junit.jupiter.api.BeforeEach;
3030
import org.junit.jupiter.api.Test;
31+
import org.junit.jupiter.api.extension.ExtendWith;
3132
import org.mockito.Mock;
3233
import org.mockito.Mockito;
33-
import org.mockito.MockitoAnnotations;
34+
import org.mockito.junit.jupiter.MockitoExtension;
3435
import org.springframework.batch.infrastructure.item.ExecutionContext;
3536

3637
/**
@@ -40,6 +41,7 @@
4041
*
4142
* @author Kazuki Shimizu
4243
*/
44+
@ExtendWith(MockitoExtension.class)
4345
class MyBatisCursorItemReaderBuilderTest {
4446

4547
@Mock
@@ -53,8 +55,6 @@ class MyBatisCursorItemReaderBuilderTest {
5355

5456
@BeforeEach
5557
void setUp() {
56-
MockitoAnnotations.openMocks(this);
57-
5858
Mockito.when(this.sqlSessionFactory.openSession(ExecutorType.SIMPLE)).thenReturn(this.sqlSession);
5959
Mockito.when(this.cursor.iterator()).thenReturn(getFoos().iterator());
6060
Map<String, Object> parameters = new HashMap<>();

src/test/java/org/mybatis/spring/batch/builder/MyBatisPagingItemReaderBuilderTest.java

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,12 @@
3232
import org.assertj.core.api.Assertions;
3333
import org.junit.jupiter.api.BeforeEach;
3434
import org.junit.jupiter.api.Test;
35+
import org.junit.jupiter.api.extension.ExtendWith;
3536
import org.mockito.Mock;
3637
import org.mockito.Mockito;
37-
import org.mockito.MockitoAnnotations;
38+
import org.mockito.junit.jupiter.MockitoExtension;
39+
import org.mockito.junit.jupiter.MockitoSettings;
40+
import org.mockito.quality.Strictness;
3841
import org.springframework.batch.infrastructure.item.ExecutionContext;
3942

4043
/**
@@ -44,6 +47,8 @@
4447
*
4548
* @author Kazuki Shimizu
4649
*/
50+
@ExtendWith(MockitoExtension.class)
51+
@MockitoSettings(strictness = Strictness.LENIENT)
4752
class MyBatisPagingItemReaderBuilderTest {
4853

4954
@Mock
@@ -57,8 +62,6 @@ class MyBatisPagingItemReaderBuilderTest {
5762

5863
@BeforeEach
5964
void setUp() {
60-
MockitoAnnotations.openMocks(this);
61-
6265
var configuration = new Configuration();
6366
var environment = new Environment("unittest", new JdbcTransactionFactory(), dataSource);
6467
configuration.setEnvironment(environment);
@@ -70,19 +73,21 @@ void setUp() {
7073
parameters.put("_page", 0);
7174
parameters.put("_pagesize", 10);
7275
parameters.put("_skiprows", 0);
76+
77+
// Most tests are using this, lenient as a result on class.
7378
Mockito.when(this.sqlSession.selectList("selectFoo", parameters)).thenReturn(getFoos());
7479
}
7580

7681
@Test
7782
void testConfiguration() throws Exception {
7883
// @formatter:off
79-
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
80-
.sqlSessionFactory(this.sqlSessionFactory)
81-
.queryId("selectFoo")
82-
.parameterValues(Collections.singletonMap("id", 1))
83-
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
84-
.build();
85-
// @formatter:on
84+
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
85+
.sqlSessionFactory(this.sqlSessionFactory)
86+
.queryId("selectFoo")
87+
.parameterValues(Collections.singletonMap("id", 1))
88+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
89+
.build();
90+
// @formatter:on
8691
itemReader.afterPropertiesSet();
8792

8893
var executionContext = new ExecutionContext();
@@ -102,14 +107,14 @@ void testConfiguration() throws Exception {
102107
@Test
103108
void testConfigurationSaveStateIsFalse() throws Exception {
104109
// @formatter:off
105-
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
106-
.sqlSessionFactory(this.sqlSessionFactory)
107-
.queryId("selectFoo")
108-
.parameterValues(Collections.singletonMap("id", 1))
109-
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
110-
.saveState(false)
111-
.build();
112-
// @formatter:on
110+
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
111+
.sqlSessionFactory(this.sqlSessionFactory)
112+
.queryId("selectFoo")
113+
.parameterValues(Collections.singletonMap("id", 1))
114+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
115+
.saveState(false)
116+
.build();
117+
// @formatter:on
113118
itemReader.afterPropertiesSet();
114119

115120
var executionContext = new ExecutionContext();
@@ -126,14 +131,14 @@ void testConfigurationSaveStateIsFalse() throws Exception {
126131
@Test
127132
void testConfigurationMaxItemCount() throws Exception {
128133
// @formatter:off
129-
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
130-
.sqlSessionFactory(this.sqlSessionFactory)
131-
.queryId("selectFoo")
132-
.parameterValues(Collections.singletonMap("id", 1))
133-
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
134-
.maxItemCount(2)
135-
.build();
136-
// @formatter:on
134+
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
135+
.sqlSessionFactory(this.sqlSessionFactory)
136+
.queryId("selectFoo")
137+
.parameterValues(Collections.singletonMap("id", 1))
138+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
139+
.maxItemCount(2)
140+
.build();
141+
// @formatter:on
137142
itemReader.afterPropertiesSet();
138143

139144
var executionContext = new ExecutionContext();
@@ -151,14 +156,14 @@ void testConfigurationMaxItemCount() throws Exception {
151156
@Test
152157
void testConfigurationPageSize() throws Exception {
153158
// @formatter:off
154-
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
155-
.sqlSessionFactory(this.sqlSessionFactory)
156-
.queryId("selectFoo")
157-
.parameterValues(Collections.singletonMap("id", 1))
158-
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
159-
.pageSize(2)
160-
.build();
161-
// @formatter:on
159+
var itemReader = new MyBatisPagingItemReaderBuilder<Foo>()
160+
.sqlSessionFactory(this.sqlSessionFactory)
161+
.queryId("selectFoo")
162+
.parameterValues(Collections.singletonMap("id", 1))
163+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
164+
.pageSize(2)
165+
.build();
166+
// @formatter:on
162167
itemReader.afterPropertiesSet();
163168

164169
Map<String, Object> parameters = new HashMap<>();
@@ -167,6 +172,8 @@ void testConfigurationPageSize() throws Exception {
167172
parameters.put("name", "Doe");
168173
parameters.put("_pagesize", 2);
169174
parameters.put("_skiprows", 0);
175+
176+
// The initial mock on this needed repeated here, lenient as a result on class.
170177
Mockito.when(this.sqlSession.selectList("selectFoo", parameters)).thenReturn(getFoos());
171178

172179
var executionContext = new ExecutionContext();

0 commit comments

Comments
 (0)