Browse Source

Document visibility requirements for Bean Overrides

This commit makes it clear that there are no visibility requirements
for @⁠TestBean fields or factory methods as well as @⁠MockitoBean or
@⁠MockitoSpyBean fields.

Closes gh-33923
pull/33953/head
Sam Brannen 1 year ago
parent
commit
7a6e401d17
  1. 17
      framework-docs/modules/ROOT/pages/testing/annotations/integration-spring/annotation-mockitobean.adoc
  2. 16
      framework-docs/modules/ROOT/pages/testing/annotations/integration-spring/annotation-testbean.adoc
  3. 5
      spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBean.java
  4. 5
      spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoBean.java
  5. 5
      spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBean.java

17
framework-docs/modules/ROOT/pages/testing/annotations/integration-spring/annotation-mockitobean.adoc

@ -52,6 +52,15 @@ When using `@MockitoSpyBean` to create a spy for a `FactoryBean`, a spy will be @@ -52,6 +52,15 @@ When using `@MockitoSpyBean` to create a spy for a `FactoryBean`, a spy will be
for the object created by the `FactoryBean`, not for the `FactoryBean` itself.
====
[NOTE]
====
There are no restrictions on the visibility of `@MockitoBean` and `@MockitoSpyBean`
fields.
Such fields can therefore be `public`, `protected`, package-private (default visibility),
or `private` depending on the needs or coding practices of the project.
====
The following example shows how to use the default behavior of the `@MockitoBean` annotation:
[tabs]
@ -62,7 +71,7 @@ Java:: @@ -62,7 +71,7 @@ Java::
----
class OverrideBeanTests {
@MockitoBean // <1>
private CustomService customService;
CustomService customService;
// test case body...
}
@ -86,7 +95,7 @@ Java:: @@ -86,7 +95,7 @@ Java::
----
class OverrideBeanTests {
@MockitoBean("service") // <1>
private CustomService customService;
CustomService customService;
// test case body...
@ -107,7 +116,7 @@ Java:: @@ -107,7 +116,7 @@ Java::
----
class OverrideBeanTests {
@MockitoSpyBean // <1>
private CustomService customService;
CustomService customService;
// test case body...
}
@ -130,7 +139,7 @@ Java:: @@ -130,7 +139,7 @@ Java::
----
class OverrideBeanTests {
@MockitoSpyBean("service") // <1>
private CustomService customService;
CustomService customService;
// test case body...

16
framework-docs/modules/ROOT/pages/testing/annotations/integration-spring/annotation-testbean.adoc

@ -30,6 +30,14 @@ same bean in several tests, make sure to name the field consistently to avoid cr @@ -30,6 +30,14 @@ same bean in several tests, make sure to name the field consistently to avoid cr
unnecessary contexts.
====
[NOTE]
====
There are no restrictions on the visibility of `@TestBean` fields or factory methods.
Such fields and methods can therefore be `public`, `protected`, package-private (default
visibility), or `private` depending on the needs or coding practices of the project.
====
The following example shows how to use the default behavior of the `@TestBean` annotation:
[tabs]
@ -40,11 +48,11 @@ Java:: @@ -40,11 +48,11 @@ Java::
----
class OverrideBeanTests {
@TestBean // <1>
private CustomService customService;
CustomService customService;
// test case body...
private static CustomService customService() { // <2>
static CustomService customService() { // <2>
return new MyFakeCustomService();
}
}
@ -68,11 +76,11 @@ Java:: @@ -68,11 +76,11 @@ Java::
----
class OverrideBeanTests {
@TestBean(name = "service", methodName = "createCustomService") // <1>
private CustomService customService;
CustomService customService;
// test case body...
private static CustomService createCustomService() { // <2>
static CustomService createCustomService() { // <2>
return new MyFakeCustomService();
}
}

5
spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBean.java

@ -105,6 +105,11 @@ import org.springframework.test.context.bean.override.BeanOverride; @@ -105,6 +105,11 @@ import org.springframework.test.context.bean.override.BeanOverride;
* FactoryBean}, the {@code FactoryBean} will be replaced with a singleton bean
* corresponding to the value returned from the {@code @TestBean} factory method.
*
* <p>There are no restrictions on the visibility of {@code @TestBean} fields or
* factory methods. Such fields and methods can therefore be {@code public},
* {@code protected}, package-private (default visibility), or {@code private}
* depending on the needs or coding practices of the project.
*
* @author Simon Baslé
* @author Stephane Nicoll
* @author Sam Brannen

5
spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoBean.java

@ -58,6 +58,11 @@ import org.springframework.test.context.bean.override.BeanOverride; @@ -58,6 +58,11 @@ import org.springframework.test.context.bean.override.BeanOverride;
* FactoryBean}, the {@code FactoryBean} will be replaced with a singleton mock
* of the type of object created by the {@code FactoryBean}.
*
* <p>There are no restrictions on the visibility of a {@code @MockitoBean} field.
* Such fields can therefore be {@code public}, {@code protected}, package-private
* (default visibility), or {@code private} depending on the needs or coding
* practices of the project.
*
* @author Simon Baslé
* @author Sam Brannen
* @since 6.2

5
spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBean.java

@ -51,6 +51,11 @@ import org.springframework.test.context.bean.override.BeanOverride; @@ -51,6 +51,11 @@ import org.springframework.test.context.bean.override.BeanOverride;
* a spy will be created for the object created by the {@code FactoryBean}, not
* for the {@code FactoryBean} itself.
*
* <p>There are no restrictions on the visibility of a {@code @MockitoSpyBean} field.
* Such fields can therefore be {@code public}, {@code protected}, package-private
* (default visibility), or {@code private} depending on the needs or coding
* practices of the project.
*
* @author Simon Baslé
* @author Sam Brannen
* @since 6.2

Loading…
Cancel
Save