Skip to content

Commit 3bd342e

Browse files
committed
Polish bean override support in the TestContext framework
1 parent 8718607 commit 3bd342e

File tree

6 files changed

+11
-13
lines changed

6 files changed

+11
-13
lines changed

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideBeanPostProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ void inject(Field field, Object target, OverrideMetadata overrideMetadata) {
272272

273273
private void inject(Field field, Object target, String beanName) {
274274
try {
275-
field.setAccessible(true);
275+
ReflectionUtils.makeAccessible(field);
276276
Object existingValue = ReflectionUtils.getField(field, target);
277277
Object bean = this.beanFactory.getBean(beanName, field.getType());
278278
if (existingValue == bean) {

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideParser.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,8 @@ boolean hasBeanOverride(Class<?> testClass) {
8282
if (hasBeanOverride.get()) {
8383
return;
8484
}
85-
long count = MergedAnnotations.from(field, DIRECT)
86-
.stream(BeanOverride.class)
87-
.count();
88-
hasBeanOverride.compareAndSet(false, count > 0L);
85+
boolean present = MergedAnnotations.from(field, DIRECT).isPresent(BeanOverride.class);
86+
hasBeanOverride.compareAndSet(false, present);
8987
});
9088
return hasBeanOverride.get();
9189
}
@@ -94,7 +92,7 @@ private void parseField(Field field, Class<?> source) {
9492
AtomicBoolean overrideAnnotationFound = new AtomicBoolean();
9593

9694
MergedAnnotations.from(field, DIRECT).stream(BeanOverride.class).forEach(mergedAnnotation -> {
97-
Assert.isTrue(mergedAnnotation.isMetaPresent(), "@BeanOverride annotation must be meta-present");
95+
Assert.state(mergedAnnotation.isMetaPresent(), "@BeanOverride annotation must be meta-present");
9896

9997
BeanOverride beanOverride = mergedAnnotation.synthesize();
10098
BeanOverrideProcessor processor = BeanUtils.instantiateClass(beanOverride.value());

spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* {@code TestExecutionListener} that enables Bean Override support in tests,
2929
* injecting overridden beans in appropriate fields of the test instance.
3030
*
31-
* <p>Some flavors of Bean Override might additionally require the use of
31+
* <p>Some Bean Override implementations might additionally require the use of
3232
* additional listeners, which should be mentioned in the javadoc for the
3333
* corresponding annotations.
3434
*
@@ -62,7 +62,7 @@ public void beforeTestMethod(TestContext testContext) throws Exception {
6262
*/
6363
protected void injectFields(TestContext testContext) {
6464
postProcessFields(testContext, (testMetadata, postProcessor) -> postProcessor.inject(
65-
testMetadata.overrideMetadata.field(), testMetadata.testInstance(), testMetadata.overrideMetadata()));
65+
testMetadata.overrideMetadata.field(), testMetadata.testInstance, testMetadata.overrideMetadata));
6666
}
6767

6868
/**
@@ -73,7 +73,7 @@ protected void injectFields(TestContext testContext) {
7373
* {@link DependencyInjectionTestExecutionListener#REINJECT_DEPENDENCIES_ATTRIBUTE}
7474
* attribute is not present in the {@code TestContext}.
7575
*/
76-
protected void reinjectFieldsIfConfigured(final TestContext testContext) throws Exception {
76+
protected void reinjectFieldsIfConfigured(TestContext testContext) throws Exception {
7777
if (Boolean.TRUE.equals(
7878
testContext.getAttribute(DependencyInjectionTestExecutionListener.REINJECT_DEPENDENCIES_ATTRIBUTE))) {
7979

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ public static Method findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodRe
8989

9090
@Override
9191
public OverrideMetadata createMetadata(Field field, Annotation overrideAnnotation, ResolvableType typeToOverride) {
92-
Class<?> declaringClass = field.getDeclaringClass();
9392
// If we can, get an explicit method name right away; fail fast if it doesn't match.
9493
if (overrideAnnotation instanceof TestBean testBeanAnnotation) {
9594
Method overrideMethod = null;
9695
String beanName = null;
9796
if (!testBeanAnnotation.methodName().isBlank()) {
97+
Class<?> declaringClass = field.getDeclaringClass();
9898
overrideMethod = findTestBeanFactoryMethod(declaringClass, field.getType(), testBeanAnnotation.methodName());
9999
}
100100
if (!testBeanAnnotation.name().isBlank()) {
@@ -134,7 +134,7 @@ protected String getExpectedBeanName() {
134134

135135
@Override
136136
public String getBeanOverrideDescription() {
137-
return "method convention";
137+
return "@TestBean";
138138
}
139139

140140
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class MockDefinition extends Definition {
7171

7272
@Override
7373
public String getBeanOverrideDescription() {
74-
return "mock";
74+
return "@MockitoBean";
7575
}
7676

7777
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class SpyDefinition extends Definition {
6161

6262
@Override
6363
public String getBeanOverrideDescription() {
64-
return "spy";
64+
return "@MockitoSpyBean";
6565
}
6666

6767
@Override

0 commit comments

Comments
 (0)