Skip to content

Commit 4faa842

Browse files
hpoettkerfmbenhassine
authored andcommitted
Upgrade to Mockito 5
Issue #4366
1 parent 4a971a0 commit 4faa842

File tree

6 files changed

+136
-170
lines changed

6 files changed

+136
-170
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<junit-vintage-engine.version>${junit-jupiter.version}</junit-vintage-engine.version>
9494
<hamcrest.version>2.2</hamcrest.version>
9595
<assertj.version>3.24.2</assertj.version>
96-
<mockito.version>4.11.0</mockito.version> <!-- FIXME build hangs at BatchRegistrarTests with version 5.1.1 -->
96+
<mockito.version>5.3.1</mockito.version>
9797
<xmlunit.version>2.9.1</xmlunit.version>
9898
<commons-io.version>2.11.0</commons-io.version>
9999
<commons-dbcp2.version>2.9.0</commons-dbcp2.version>

spring-batch-core/src/test/java/org/springframework/batch/core/configuration/annotation/BatchRegistrarTests.java

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022 the original author or authors.
2+
* Copyright 2022-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -78,19 +78,13 @@ public void execute() throws Throwable {
7878
@Test
7979
@DisplayName("When custom beans are provided, then default ones should not be used")
8080
void testConfigurationWithUserDefinedBeans() {
81-
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
82-
JobConfigurationWithUserDefinedInfrastructureBeans.class);
83-
84-
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobRepository,
85-
context.getBean(JobRepository.class));
86-
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobExplorer,
87-
context.getBean(JobExplorer.class));
88-
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobLauncher,
89-
context.getBean(JobLauncher.class));
90-
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobRegistry,
91-
context.getBean(JobRegistry.class));
92-
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobOperator,
93-
context.getBean(JobOperator.class));
81+
var context = new AnnotationConfigApplicationContext(JobConfigurationWithUserDefinedInfrastructureBeans.class);
82+
83+
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobRepository.class)).isMock());
84+
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobExplorer.class)).isMock());
85+
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobLauncher.class)).isMock());
86+
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobRegistry.class)).isMock());
87+
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobOperator.class)).isMock());
9488
}
9589

9690
@Test
@@ -203,39 +197,29 @@ public DataSource dataSource() {
203197
@EnableBatchProcessing
204198
public static class JobConfigurationWithUserDefinedInfrastructureBeans {
205199

206-
public static JobRepository jobRepository = Mockito.mock(JobRepository.class);
207-
208-
public static JobExplorer jobExplorer = Mockito.mock(JobExplorer.class);
209-
210-
public static JobLauncher jobLauncher = Mockito.mock(JobLauncher.class);
211-
212-
public static JobRegistry jobRegistry = Mockito.mock(JobRegistry.class);
213-
214-
public static JobOperator jobOperator = Mockito.mock(JobOperator.class);
215-
216200
@Bean
217201
public JobRepository jobRepository() {
218-
return jobRepository;
202+
return Mockito.mock(JobRepository.class);
219203
}
220204

221205
@Bean
222206
public JobExplorer jobExplorer() {
223-
return jobExplorer;
207+
return Mockito.mock(JobExplorer.class);
224208
}
225209

226210
@Bean
227211
public JobLauncher jobLauncher() {
228-
return jobLauncher;
212+
return Mockito.mock(JobLauncher.class);
229213
}
230214

231215
@Bean
232216
public JobRegistry jobRegistry() {
233-
return jobRegistry;
217+
return Mockito.mock(JobRegistry.class);
234218
}
235219

236220
@Bean
237221
public JobOperator jobOperator() {
238-
return jobOperator;
222+
return Mockito.mock(JobOperator.class);
239223
}
240224

241225
}

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/MongoItemReaderTests.java

Lines changed: 77 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2013-2022 the original author or authors.
2+
* Copyright 2013-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,7 +23,6 @@
2323
import org.junit.jupiter.api.BeforeEach;
2424
import org.junit.jupiter.api.Test;
2525
import org.junit.jupiter.api.extension.ExtendWith;
26-
import org.mockito.ArgumentCaptor;
2726
import org.mockito.Mock;
2827
import org.mockito.junit.jupiter.MockitoExtension;
2928
import org.springframework.data.domain.PageRequest;
@@ -37,7 +36,11 @@
3736
import static org.junit.jupiter.api.Assertions.assertFalse;
3837
import static org.junit.jupiter.api.Assertions.assertThrows;
3938
import static org.junit.jupiter.api.Assertions.assertTrue;
39+
import static org.mockito.ArgumentMatchers.any;
40+
import static org.mockito.ArgumentMatchers.anyString;
41+
import static org.mockito.ArgumentMatchers.assertArg;
4042
import static org.mockito.ArgumentMatchers.eq;
43+
import static org.mockito.Mockito.verify;
4144
import static org.mockito.Mockito.when;
4245

4346
/**
@@ -109,89 +112,87 @@ void testAfterPropertiesSetForQueryObject() throws Exception {
109112

110113
@Test
111114
void testBasicQueryFirstPage() {
112-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
113-
114-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
115+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
115116

116117
assertFalse(reader.doPageRead().hasNext());
117118

118-
Query query = queryContainer.getValue();
119-
assertEquals(50, query.getLimit());
120-
assertEquals(0, query.getSkip());
121-
assertEquals("{}", query.getQueryObject().toJson());
122-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
119+
verify(template).find(assertArg(query -> {
120+
assertEquals(50, query.getLimit());
121+
assertEquals(0, query.getSkip());
122+
assertEquals("{}", query.getQueryObject().toJson());
123+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
124+
}), eq(String.class));
123125
}
124126

125127
@Test
126128
void testBasicQuerySecondPage() {
127129
reader.page = 2;
128-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
129130

130-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
131+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
131132

132133
assertFalse(reader.doPageRead().hasNext());
133134

134-
Query query = queryContainer.getValue();
135-
136-
assertEquals(50, query.getLimit());
137-
assertEquals(100, query.getSkip());
138-
assertEquals("{}", query.getQueryObject().toJson());
139-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
140-
assertTrue(query.getFieldsObject().isEmpty());
135+
verify(template).find(assertArg(query -> {
136+
assertEquals(50, query.getLimit());
137+
assertEquals(100, query.getSkip());
138+
assertEquals("{}", query.getQueryObject().toJson());
139+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
140+
assertTrue(query.getFieldsObject().isEmpty());
141+
}), eq(String.class));
141142
}
142143

143144
@Test
144145
void testQueryWithFields() {
145146
reader.setFields("{name : 1, age : 1, _id: 0}");
146-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
147147

148-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
148+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
149149

150150
assertFalse(reader.doPageRead().hasNext());
151151

152-
Query query = queryContainer.getValue();
153-
assertEquals(50, query.getLimit());
154-
assertEquals(0, query.getSkip());
155-
assertEquals("{}", query.getQueryObject().toJson());
156-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
157-
assertEquals(1, query.getFieldsObject().get("name"));
158-
assertEquals(1, query.getFieldsObject().get("age"));
159-
assertEquals(0, query.getFieldsObject().get("_id"));
152+
verify(template).find(assertArg(query -> {
153+
assertEquals(50, query.getLimit());
154+
assertEquals(0, query.getSkip());
155+
assertEquals("{}", query.getQueryObject().toJson());
156+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
157+
assertEquals(1, query.getFieldsObject().get("name"));
158+
assertEquals(1, query.getFieldsObject().get("age"));
159+
assertEquals(0, query.getFieldsObject().get("_id"));
160+
}), eq(String.class));
160161
}
161162

162163
@Test
163164
void testQueryWithHint() {
164165
reader.setHint("{ $natural : 1}");
165-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
166166

167-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
167+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
168168

169169
assertFalse(reader.doPageRead().hasNext());
170170

171-
Query query = queryContainer.getValue();
172-
assertEquals(50, query.getLimit());
173-
assertEquals(0, query.getSkip());
174-
assertEquals("{}", query.getQueryObject().toJson());
175-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
176-
assertEquals("{ $natural : 1}", query.getHint());
171+
verify(template).find(assertArg(query -> {
172+
assertEquals(50, query.getLimit());
173+
assertEquals(0, query.getSkip());
174+
assertEquals("{}", query.getQueryObject().toJson());
175+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
176+
assertEquals("{ $natural : 1}", query.getHint());
177+
}), eq(String.class));
177178
}
178179

179180
@Test
180181
void testQueryWithParameters() {
181182
reader.setParameterValues(Collections.singletonList("foo"));
182183

183184
reader.setQuery("{ name : ?0 }");
184-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
185185

186-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
186+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
187187

188188
assertFalse(reader.doPageRead().hasNext());
189189

190-
Query query = queryContainer.getValue();
191-
assertEquals(50, query.getLimit());
192-
assertEquals(0, query.getSkip());
193-
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
194-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
190+
verify(template).find(assertArg(query -> {
191+
assertEquals(50, query.getLimit());
192+
assertEquals(0, query.getSkip());
193+
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
194+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
195+
}), eq(String.class));
195196
}
196197

197198
@Test
@@ -200,20 +201,17 @@ void testQueryWithCollection() {
200201

201202
reader.setQuery("{ name : ?0 }");
202203
reader.setCollection("collection");
203-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
204-
ArgumentCaptor<String> collectionContainer = ArgumentCaptor.forClass(String.class);
205204

206-
when(template.find(queryContainer.capture(), eq(String.class), collectionContainer.capture()))
207-
.thenReturn(new ArrayList<>());
205+
when(template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());
208206

209207
assertFalse(reader.doPageRead().hasNext());
210208

211-
Query query = queryContainer.getValue();
212-
assertEquals(50, query.getLimit());
213-
assertEquals(0, query.getSkip());
214-
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
215-
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
216-
assertEquals("collection", collectionContainer.getValue());
209+
verify(template).find(assertArg(query -> {
210+
assertEquals(50, query.getLimit());
211+
assertEquals(0, query.getSkip());
212+
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
213+
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
214+
}), eq(String.class), eq("collection"));
217215
}
218216

219217
@Test
@@ -227,15 +225,14 @@ void testQueryObject() throws Exception {
227225

228226
reader.afterPropertiesSet();
229227

230-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
231-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
228+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
232229

233230
assertFalse(reader.doPageRead().hasNext());
234231

235-
Query actualQuery = queryContainer.getValue();
236-
assertFalse(reader.doPageRead().hasNext());
237-
assertEquals(10, actualQuery.getLimit());
238-
assertEquals(0, actualQuery.getSkip());
232+
verify(template).find(assertArg(actualQuery -> {
233+
assertEquals(10, actualQuery.getLimit());
234+
assertEquals(0, actualQuery.getSkip());
235+
}), eq(String.class));
239236
}
240237

241238
@Test
@@ -249,15 +246,14 @@ void testQueryObjectWithIgnoredPageSize() throws Exception {
249246

250247
reader.afterPropertiesSet();
251248

252-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
253-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
249+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
254250

255251
assertFalse(reader.doPageRead().hasNext());
256252

257-
Query actualQuery = queryContainer.getValue();
258-
assertFalse(reader.doPageRead().hasNext());
259-
assertEquals(10, actualQuery.getLimit());
260-
assertEquals(0, actualQuery.getSkip());
253+
verify(template).find(assertArg(actualQuery -> {
254+
assertEquals(10, actualQuery.getLimit());
255+
assertEquals(0, actualQuery.getSkip());
256+
}), eq(String.class));
261257
}
262258

263259
@Test
@@ -272,15 +268,14 @@ void testQueryObjectWithPageSize() throws Exception {
272268

273269
reader.afterPropertiesSet();
274270

275-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
276-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
271+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
277272

278273
assertFalse(reader.doPageRead().hasNext());
279274

280-
Query actualQuery = queryContainer.getValue();
281-
assertFalse(reader.doPageRead().hasNext());
282-
assertEquals(100, actualQuery.getLimit());
283-
assertEquals(0, actualQuery.getSkip());
275+
verify(template).find(assertArg(actualQuery -> {
276+
assertEquals(100, actualQuery.getLimit());
277+
assertEquals(0, actualQuery.getSkip());
278+
}), eq(String.class));
284279
}
285280

286281
@Test
@@ -294,13 +289,11 @@ void testQueryObjectWithoutLimit() throws Exception {
294289

295290
reader.afterPropertiesSet();
296291

297-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
298-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
292+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
299293

300294
assertFalse(reader.doPageRead().hasNext());
301295

302-
Query actualQuery = queryContainer.getValue();
303-
assertEquals(100, actualQuery.getLimit());
296+
verify(template).find(assertArg(actualQuery -> assertEquals(100, actualQuery.getLimit())), eq(String.class));
304297
}
305298

306299
@Test
@@ -313,13 +306,11 @@ void testQueryObjectWithoutLimitAndPageSize() throws Exception {
313306

314307
reader.afterPropertiesSet();
315308

316-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
317-
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
309+
when(template.find(any(), any())).thenReturn(new ArrayList<>());
318310

319311
assertFalse(reader.doPageRead().hasNext());
320312

321-
Query actualQuery = queryContainer.getValue();
322-
assertEquals(10, actualQuery.getLimit());
313+
verify(template).find(assertArg(actualQuery -> assertEquals(10, actualQuery.getLimit())), eq(String.class));
323314
}
324315

325316
@Test
@@ -334,18 +325,15 @@ void testQueryObjectWithCollection() throws Exception {
334325

335326
reader.afterPropertiesSet();
336327

337-
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
338-
ArgumentCaptor<String> stringContainer = ArgumentCaptor.forClass(String.class);
339-
when(template.find(queryContainer.capture(), eq(String.class), stringContainer.capture()))
340-
.thenReturn(new ArrayList<>());
328+
when(template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());
341329

342330
assertFalse(reader.doPageRead().hasNext());
343331

344-
Query actualQuery = queryContainer.getValue();
345-
assertFalse(reader.doPageRead().hasNext());
346-
assertEquals(10, actualQuery.getLimit());
347-
assertEquals(0, actualQuery.getSkip());
348-
assertEquals("collection", stringContainer.getValue());
332+
verify(template).find(assertArg(actualQuery -> {
333+
assertFalse(reader.doPageRead().hasNext());
334+
assertEquals(10, actualQuery.getLimit());
335+
assertEquals(0, actualQuery.getSkip());
336+
}), eq(String.class), eq("collection"));
349337
}
350338

351339
@Test

0 commit comments

Comments
 (0)