Skip to content

Upgrade to Mockito 5 #4366

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
<junit-vintage-engine.version>${junit-jupiter.version}</junit-vintage-engine.version>
<hamcrest.version>2.2</hamcrest.version>
<assertj.version>3.24.2</assertj.version>
<mockito.version>4.11.0</mockito.version> <!-- FIXME build hangs at BatchRegistrarTests with version 5.1.1 -->
<mockito.version>5.3.1</mockito.version>
<xmlunit.version>2.9.1</xmlunit.version>
<commons-io.version>2.11.0</commons-io.version>
<commons-dbcp2.version>2.9.0</commons-dbcp2.version>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2022 the original author or authors.
* Copyright 2022-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -78,19 +78,13 @@ public void execute() throws Throwable {
@Test
@DisplayName("When custom beans are provided, then default ones should not be used")
void testConfigurationWithUserDefinedBeans() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
JobConfigurationWithUserDefinedInfrastructureBeans.class);

Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobRepository,
context.getBean(JobRepository.class));
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobExplorer,
context.getBean(JobExplorer.class));
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobLauncher,
context.getBean(JobLauncher.class));
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobRegistry,
context.getBean(JobRegistry.class));
Assertions.assertEquals(JobConfigurationWithUserDefinedInfrastructureBeans.jobOperator,
context.getBean(JobOperator.class));
var context = new AnnotationConfigApplicationContext(JobConfigurationWithUserDefinedInfrastructureBeans.class);

Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobRepository.class)).isMock());
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobExplorer.class)).isMock());
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobLauncher.class)).isMock());
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobRegistry.class)).isMock());
Assertions.assertTrue(Mockito.mockingDetails(context.getBean(JobOperator.class)).isMock());
}

@Test
Expand Down Expand Up @@ -203,39 +197,29 @@ public DataSource dataSource() {
@EnableBatchProcessing
public static class JobConfigurationWithUserDefinedInfrastructureBeans {

public static JobRepository jobRepository = Mockito.mock(JobRepository.class);

public static JobExplorer jobExplorer = Mockito.mock(JobExplorer.class);

public static JobLauncher jobLauncher = Mockito.mock(JobLauncher.class);

public static JobRegistry jobRegistry = Mockito.mock(JobRegistry.class);

public static JobOperator jobOperator = Mockito.mock(JobOperator.class);

@Bean
public JobRepository jobRepository() {
return jobRepository;
return Mockito.mock(JobRepository.class);
}

@Bean
public JobExplorer jobExplorer() {
return jobExplorer;
return Mockito.mock(JobExplorer.class);
}

@Bean
public JobLauncher jobLauncher() {
return jobLauncher;
return Mockito.mock(JobLauncher.class);
}

@Bean
public JobRegistry jobRegistry() {
return jobRegistry;
return Mockito.mock(JobRegistry.class);
}

@Bean
public JobOperator jobOperator() {
return jobOperator;
return Mockito.mock(JobOperator.class);
}

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2013-2022 the original author or authors.
* Copyright 2013-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -23,7 +23,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.domain.PageRequest;
Expand All @@ -37,7 +36,11 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.assertArg;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
Expand Down Expand Up @@ -109,89 +112,87 @@ void testAfterPropertiesSetForQueryObject() throws Exception {

@Test
void testBasicQueryFirstPage() {
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);

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

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

Query query = queryContainer.getValue();
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
}), eq(String.class));
}

@Test
void testBasicQuerySecondPage() {
reader.page = 2;
ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);

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

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

Query query = queryContainer.getValue();

assertEquals(50, query.getLimit());
assertEquals(100, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertTrue(query.getFieldsObject().isEmpty());
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(100, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertTrue(query.getFieldsObject().isEmpty());
}), eq(String.class));
}

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

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

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

Query query = queryContainer.getValue();
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertEquals(1, query.getFieldsObject().get("name"));
assertEquals(1, query.getFieldsObject().get("age"));
assertEquals(0, query.getFieldsObject().get("_id"));
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertEquals(1, query.getFieldsObject().get("name"));
assertEquals(1, query.getFieldsObject().get("age"));
assertEquals(0, query.getFieldsObject().get("_id"));
}), eq(String.class));
}

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

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

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

Query query = queryContainer.getValue();
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertEquals("{ $natural : 1}", query.getHint());
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertEquals("{ $natural : 1}", query.getHint());
}), eq(String.class));
}

@Test
void testQueryWithParameters() {
reader.setParameterValues(Collections.singletonList("foo"));

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

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

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

Query query = queryContainer.getValue();
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
}), eq(String.class));
}

@Test
Expand All @@ -200,20 +201,17 @@ void testQueryWithCollection() {

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

when(template.find(queryContainer.capture(), eq(String.class), collectionContainer.capture()))
.thenReturn(new ArrayList<>());
when(template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());

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

Query query = queryContainer.getValue();
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
assertEquals("collection", collectionContainer.getValue());
verify(template).find(assertArg(query -> {
assertEquals(50, query.getLimit());
assertEquals(0, query.getSkip());
assertEquals("{\"name\": \"foo\"}", query.getQueryObject().toJson());
assertEquals("{\"name\": -1}", query.getSortObject().toJson());
}), eq(String.class), eq("collection"));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
when(template.find(any(), any())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertFalse(reader.doPageRead().hasNext());
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
verify(template).find(assertArg(actualQuery -> {
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
}), eq(String.class));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
when(template.find(any(), any())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertFalse(reader.doPageRead().hasNext());
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
verify(template).find(assertArg(actualQuery -> {
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
}), eq(String.class));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
when(template.find(any(), any())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertFalse(reader.doPageRead().hasNext());
assertEquals(100, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
verify(template).find(assertArg(actualQuery -> {
assertEquals(100, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
}), eq(String.class));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
when(template.find(any(), any())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertEquals(100, actualQuery.getLimit());
verify(template).find(assertArg(actualQuery -> assertEquals(100, actualQuery.getLimit())), eq(String.class));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>());
when(template.find(any(), any())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertEquals(10, actualQuery.getLimit());
verify(template).find(assertArg(actualQuery -> assertEquals(10, actualQuery.getLimit())), eq(String.class));
}

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

reader.afterPropertiesSet();

ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class);
ArgumentCaptor<String> stringContainer = ArgumentCaptor.forClass(String.class);
when(template.find(queryContainer.capture(), eq(String.class), stringContainer.capture()))
.thenReturn(new ArrayList<>());
when(template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());

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

Query actualQuery = queryContainer.getValue();
assertFalse(reader.doPageRead().hasNext());
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
assertEquals("collection", stringContainer.getValue());
verify(template).find(assertArg(actualQuery -> {
assertFalse(reader.doPageRead().hasNext());
assertEquals(10, actualQuery.getLimit());
assertEquals(0, actualQuery.getSkip());
}), eq(String.class), eq("collection"));
}

@Test
Expand Down
Loading