Skip to content

Commit 2476394

Browse files
wanger26wilkinsona
authored andcommitted
Deprecate @MockBean and @SpyBean
- Deprecate Deprecate @MockBean and @SpyBean in favor of Spring Framework 6.2's @MockitoBean and @MockitoSpy - Migrate usages of @MockBean and @SpyBean to @MockitoBean and @MockitoSpy Signed-off-by: Jakob Wanger <[email protected]> See gh-39864
1 parent acdaa6d commit 2476394

File tree

38 files changed

+87
-33
lines changed

38 files changed

+87
-33
lines changed

buildSrc/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ new File(projectDir.parentFile, "gradle.properties").withInputStream {
2222
}
2323
}
2424
versions["jackson"] = "2.15.3"
25-
versions["springFramework"] = "6.0.12"
25+
versions["springFramework"] = "6.2.0-SNAPSHOT"
2626
ext.set("versions", versions)
2727
if (versions.springFramework.contains("-")) {
2828
repositories {

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ dependencies {
177177
testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient")
178178
testImplementation("org.springframework.security:spring-security-test")
179179
testImplementation("org.yaml:snakeyaml")
180+
testImplementation("org.springframework:spring-test")
180181

181182
testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api")
182183
testRuntimeOnly("jakarta.transaction:jakarta.transaction-api")

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/AuditEventsEndpointDocumentationTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
import org.springframework.boot.actuate.audit.AuditEvent;
2727
import org.springframework.boot.actuate.audit.AuditEventRepository;
2828
import org.springframework.boot.actuate.audit.AuditEventsEndpoint;
29-
import org.springframework.boot.test.mock.mockito.MockBean;
3029
import org.springframework.context.annotation.Bean;
3130
import org.springframework.context.annotation.Configuration;
3231
import org.springframework.context.annotation.Import;
32+
import org.springframework.test.bean.override.mockito.MockitoBean;
3333

3434
import static org.assertj.core.api.Assertions.assertThat;
3535
import static org.mockito.ArgumentMatchers.any;
@@ -48,7 +48,7 @@
4848
*/
4949
class AuditEventsEndpointDocumentationTests extends MockMvcEndpointDocumentationTests {
5050

51-
@MockBean
51+
@MockitoBean
5252
private AuditEventRepository repository;
5353

5454
@Test

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/HttpExchangesEndpointDocumentationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.context.annotation.Import;
4242
import org.springframework.http.HttpHeaders;
4343
import org.springframework.restdocs.payload.JsonFieldType;
44+
import org.springframework.test.bean.override.mockito.MockitoBean;
4445

4546
import static org.assertj.core.api.Assertions.assertThat;
4647
import static org.mockito.BDDMockito.given;
@@ -56,7 +57,7 @@
5657
*/
5758
class HttpExchangesEndpointDocumentationTests extends MockMvcEndpointDocumentationTests {
5859

59-
@MockBean
60+
@MockitoBean
6061
private HttpExchangeRepository repository;
6162

6263
@Test

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/LoggersEndpointDocumentationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation;
3939
import org.springframework.restdocs.payload.FieldDescriptor;
4040
import org.springframework.restdocs.payload.JsonFieldType;
41+
import org.springframework.test.bean.override.mockito.MockitoBean;
4142

4243
import static org.assertj.core.api.Assertions.assertThat;
4344
import static org.mockito.BDDMockito.given;
@@ -62,7 +63,7 @@ class LoggersEndpointDocumentationTests extends MockMvcEndpointDocumentationTest
6263
.type(JsonFieldType.STRING)
6364
.optional(), fieldWithPath("members").description("Loggers that are part of this group"));
6465

65-
@MockBean
66+
@MockitoBean
6667
private LoggingSystem loggingSystem;
6768

6869
@Autowired

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/QuartzEndpointDocumentationTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class QuartzEndpointDocumentationTests extends MockMvcEndpointDocumentationTests
178178
.type(JsonFieldType.OBJECT)
179179
.description("Job data map keyed by name, if any.") };
180180

181-
@MockBean
181+
@MockitoBean
182182
private Scheduler scheduler;
183183

184184
@Test

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/SessionsEndpointDocumentationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.springframework.session.FindByIndexNameSessionRepository;
3636
import org.springframework.session.MapSession;
3737
import org.springframework.session.Session;
38+
import org.springframework.test.bean.override.mockito.MockitoBean;
3839
import org.springframework.test.context.TestPropertySource;
3940

4041
import static org.assertj.core.api.Assertions.assertThat;
@@ -72,7 +73,7 @@ class SessionsEndpointDocumentationTests extends MockMvcEndpointDocumentationTes
7273
.description("Maximum permitted period of inactivity, in seconds, before the session will expire."),
7374
fieldWithPath("expired").description("Whether the session has expired."));
7475

75-
@MockBean
76+
@MockitoBean
7677
private FindByIndexNameSessionRepository<Session> sessionRepository;
7778

7879
@Test

spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/features/kotlin.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ JUnit 5 enables a test class to be instantiated once and reused for all of the c
145145
This makes it possible to use `@BeforeAll` and `@AfterAll` annotations on non-static methods, which is a good fit for Kotlin.
146146

147147
To mock Kotlin classes, https://mockk.io/[MockK] is recommended.
148-
If you need the `MockK` equivalent of the Mockito specific xref:testing/spring-boot-applications.adoc#testing.spring-boot-applications.mocking-beans[`@MockBean` and `@SpyBean` annotations], you can use https://github.com/Ninja-Squad/springmockk[SpringMockK] which provides similar `@MockkBean` and `@SpykBean` annotations.
148+
If you need the `MockK` equivalent of the Mockito specific xref:testing/spring-boot-applications.adoc#testing.spring-boot-applications.mocking-beans[`@MockitoBean` and `@MockitoSpyBean` annotations], you can use https://github.com/Ninja-Squad/springmockk[SpringMockK] which provides similar `@MockkBean` and `@SpykBean` annotations.
149149

150150

151151

spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/springbootapplications/springmvctests/MyControllerTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
import org.springframework.beans.factory.annotation.Autowired;
2222
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
23-
import org.springframework.boot.test.mock.mockito.MockBean;
2423
import org.springframework.http.MediaType;
24+
import org.springframework.test.bean.override.mockito.MockitoBean;
2525
import org.springframework.test.web.servlet.assertj.MockMvcTester;
2626

2727
import static org.assertj.core.api.Assertions.assertThat;
@@ -33,7 +33,7 @@ class MyControllerTests {
3333
@Autowired
3434
private MockMvcTester mvc;
3535

36-
@MockBean
36+
@MockitoBean
3737
private UserVehicleService userVehicleService;
3838

3939
@Test

spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/springbootapplications/springmvctests/MyHtmlUnitTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import org.springframework.beans.factory.annotation.Autowired;
2424
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
25-
import org.springframework.boot.test.mock.mockito.MockBean;
25+
import org.springframework.test.bean.override.mockito.MockitoBean;
2626

2727
import static org.assertj.core.api.Assertions.assertThat;
2828
import static org.mockito.BDDMockito.given;
@@ -33,7 +33,7 @@ class MyHtmlUnitTests {
3333
@Autowired
3434
private WebClient webClient;
3535

36-
@MockBean
36+
@MockitoBean
3737
private UserVehicleService userVehicleService;
3838

3939
@Test

spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/springbootapplications/springwebfluxtests/MyControllerTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
import org.springframework.beans.factory.annotation.Autowired;
2222
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
23-
import org.springframework.boot.test.mock.mockito.MockBean;
2423
import org.springframework.http.MediaType;
24+
import org.springframework.test.bean.override.mockito.MockitoBean;
2525
import org.springframework.test.web.reactive.server.WebTestClient;
2626

2727
import static org.mockito.BDDMockito.given;
@@ -32,7 +32,7 @@ class MyControllerTests {
3232
@Autowired
3333
private WebTestClient webClient;
3434

35-
@MockBean
35+
@MockitoBean
3636
private UserVehicleService userVehicleService;
3737

3838
@Test

spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/testing/springbootapplications/springmvctests/MyControllerTests.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ import org.junit.jupiter.api.Test
2121
import org.mockito.BDDMockito.given
2222
import org.springframework.beans.factory.annotation.Autowired
2323
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
24-
import org.springframework.boot.test.mock.mockito.MockBean
2524
import org.springframework.http.MediaType
25+
import org.springframework.test.bean.override.mockito.MockitoBean
2626
import org.springframework.test.web.servlet.assertj.MockMvcTester
2727

2828
@WebMvcTest(UserVehicleController::class)
2929
class MyControllerTests(@Autowired val mvc: MockMvcTester) {
3030

31-
@MockBean
31+
@MockitoBean
3232
lateinit var userVehicleService: UserVehicleService
3333

3434
@Test

spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/testing/springbootapplications/springmvctests/MyHtmlUnitTests.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ import org.junit.jupiter.api.Test
2323
import org.mockito.BDDMockito.given
2424
import org.springframework.beans.factory.annotation.Autowired
2525
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
26-
import org.springframework.boot.test.mock.mockito.MockBean
26+
import org.springframework.test.bean.override.mockito.MockitoBean
2727

2828
@WebMvcTest(UserVehicleController::class)
2929
class MyHtmlUnitTests(@Autowired val webClient: WebClient) {
3030

31-
@MockBean
31+
@MockitoBean
3232
lateinit var userVehicleService: UserVehicleService
3333

3434
@Test

spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/testing/springbootapplications/springwebfluxtests/MyControllerTests.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ import org.junit.jupiter.api.Test
2020
import org.mockito.BDDMockito.given
2121
import org.springframework.beans.factory.annotation.Autowired
2222
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
23-
import org.springframework.boot.test.mock.mockito.MockBean
2423
import org.springframework.http.MediaType
24+
import org.springframework.test.bean.override.mockito.MockitoBean
2525
import org.springframework.test.web.reactive.server.WebTestClient
2626
import org.springframework.test.web.reactive.server.expectBody
2727

2828
@WebFluxTest(UserVehicleController::class)
2929
class MyControllerTests(@Autowired val webClient: WebTestClient) {
3030

31-
@MockBean
31+
@MockitoBean
3232
lateinit var userVehicleService: UserVehicleService
3333

3434
@Test

spring-boot-project/spring-boot-test/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ dependencies {
5555
testImplementation("org.spockframework:spock-core")
5656
testImplementation("org.springframework:spring-webmvc")
5757
testImplementation("org.springframework:spring-core-test")
58+
testImplementation("org.springframework:spring-test")
5859
testImplementation("org.testng:testng")
5960

6061
testRuntimeOnly("org.junit.vintage:junit-vintage-engine")

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/Definition.java

+2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
*
2424
* @author Phillip Webb
2525
* @see DefinitionsParser
26+
* @deprecated since 3.4.0. See {@link SpyBean} and {@link MockBean} for more details.
2627
*/
28+
@Deprecated(since = "3.4.0")
2729
abstract class Definition {
2830

2931
private static final int MULTIPLIER = 31;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/DefinitionsParser.java

+3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@
4141
*
4242
* @author Phillip Webb
4343
* @author Stephane Nicoll
44+
* @deprecated since 3.4.0. See {@link SpyBean} and {@link MockBean} for more details.
4445
*/
46+
47+
@Deprecated(since = "3.4.0")
4548
class DefinitionsParser {
4649

4750
private final Set<Definition> definitions;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockBean.java

+3
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,14 @@
9191
* @author Phillip Webb
9292
* @since 1.4.0
9393
* @see MockitoPostProcessor
94+
* @deprecated since 3.4.0 in favor of
95+
* {@link org.springframework.test.bean.override.mockito.MockitoBean}
9496
*/
9597
@Target({ ElementType.TYPE, ElementType.FIELD })
9698
@Retention(RetentionPolicy.RUNTIME)
9799
@Documented
98100
@Repeatable(MockBeans.class)
101+
@Deprecated(since = "3.4.0")
99102
public @interface MockBean {
100103

101104
/**

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockBeans.java

+3
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@
3333
*
3434
* @author Phillip Webb
3535
* @since 1.4.0
36+
* @deprecated since 3.4.0 in favor of
37+
* {@link org.springframework.test.bean.override.mockito.MockitoBean}
3638
*/
3739
@Retention(RetentionPolicy.RUNTIME)
3840
@Target(ElementType.TYPE)
3941
@Documented
42+
@Deprecated(since = "3.4.0")
4043
public @interface MockBeans {
4144

4245
/**

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java

+2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
* A complete definition that can be used to create a Mockito mock.
3838
*
3939
* @author Phillip Webb
40+
* @deprecated since 3.4.0. See {@link MockBean} for more details.
4041
*/
42+
@Deprecated(since = "3.4.0")
4143
class MockDefinition extends Definition {
4244

4345
private static final int MULTIPLIER = 31;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockReset.java

+4
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@
3535
* @author Phillip Webb
3636
* @since 1.4.0
3737
* @see ResetMocksTestExecutionListener
38+
* @deprecated since 3.4.0 in favor of
39+
* {@link org.springframework.test.bean.override.mockito.MockReset}
3840
*/
41+
42+
@Deprecated(since = "3.4.0")
3943
public enum MockReset {
4044

4145
/**

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoBeans.java

+2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
* Beans created using Mockito.
2525
*
2626
* @author Andy Wilkinson
27+
* @deprecated since 3.4.0. See {@link MockBean} for more details.
2728
*/
29+
@Deprecated(since = "3.4.0")
2830
class MockitoBeans implements Iterable<Object> {
2931

3032
private final List<Object> beans = new ArrayList<>();

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoContextCustomizer.java

+3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@
2828
* A {@link ContextCustomizer} to add Mockito support.
2929
*
3030
* @author Phillip Webb
31+
* @deprecated since 3.4.0 in favor of
32+
* {@link org.springframework.test.bean.override.BeanOverrideContextCustomizerFactory}
3133
*/
34+
@Deprecated(since = "3.4.0")
3235
class MockitoContextCustomizer implements ContextCustomizer {
3336

3437
private final Set<Definition> definitions;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoContextCustomizerFactory.java

+3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727
* A {@link ContextCustomizerFactory} to add Mockito support.
2828
*
2929
* @author Phillip Webb
30+
* @deprecated since 3.4.0 in favor of
31+
* {@link org.springframework.test.bean.override.BeanOverrideContextCustomizerFactory}
3032
*/
33+
@Deprecated(since = "3.4.0")
3134
class MockitoContextCustomizerFactory implements ContextCustomizerFactory {
3235

3336
@Override

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoPostProcessor.java

+3
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@
7676
* @author Stephane Nicoll
7777
* @author Andreas Neiser
7878
* @since 1.4.0
79+
* @deprecated since 3.4.0 in favor of
80+
* {@link org.springframework.test.bean.override.BeanOverrideBeanPostProcessor}
7981
*/
82+
@Deprecated(since = "3.4.0")
8083
public class MockitoPostProcessor implements InstantiationAwareBeanPostProcessor, BeanClassLoaderAware,
8184
BeanFactoryAware, BeanFactoryPostProcessor, Ordered {
8285

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoTestExecutionListener.java

+4
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@
3737
* @author Moritz Halbritter
3838
* @since 1.4.2
3939
* @see ResetMocksTestExecutionListener
40+
* @deprecated since 3.4.0 in favor of
41+
* {@link org.springframework.test.bean.override.mockito.MockitoTestExecutionListener}
4042
*/
43+
44+
@Deprecated(since = "3.4.0")
4145
public class MockitoTestExecutionListener extends AbstractTestExecutionListener {
4246

4347
@Override

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/QualifierDefinition.java

+3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@
3434
* @author Phillip Webb
3535
* @author Stephane Nicoll
3636
* @see Definition
37+
* @deprecated since 3.4.0. See {@link SpyBean} and {@link MockBean} for more details.
3738
*/
39+
40+
@Deprecated(since = "3.4.0")
3841
class QualifierDefinition {
3942

4043
private final Field field;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/ResetMocksTestExecutionListener.java

+3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@
4343
* @author Phillip Webb
4444
* @since 1.4.0
4545
* @see MockitoTestExecutionListener
46+
* @deprecated since 3.4.0 in favor of
47+
* {@link org.springframework.test.bean.override.mockito.MockitoResetTestExecutionListener}
4648
*/
49+
@Deprecated(since = "3.4.0")
4750
public class ResetMocksTestExecutionListener extends AbstractTestExecutionListener {
4851

4952
private static final boolean MOCKITO_IS_PRESENT = ClassUtils.isPresent("org.mockito.MockSettings",

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/SpyBean.java

+3
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@
8989
* @author Phillip Webb
9090
* @since 1.4.0
9191
* @see MockitoPostProcessor
92+
* @deprecated since 3.4.0 in favor of
93+
* {@link org.springframework.test.bean.override.mockito.MockitoSpyBean}
9294
*/
95+
@Deprecated(since = "3.4.0")
9396
@Target({ ElementType.TYPE, ElementType.FIELD })
9497
@Retention(RetentionPolicy.RUNTIME)
9598
@Documented

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/SpyBeans.java

+3
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@
3333
*
3434
* @author Phillip Webb
3535
* @since 1.4.0
36+
* @deprecated since 3.4.0 in favor of
37+
* {@link org.springframework.test.bean.override.mockito.MockitoSpyBean}
3638
*/
3739
@Retention(RetentionPolicy.RUNTIME)
3840
@Target(ElementType.TYPE)
3941
@Documented
42+
@Deprecated(since = "3.4.0")
4043
public @interface SpyBeans {
4144

4245
/**

0 commit comments

Comments
 (0)