mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-23 14:40:00 +00:00
Extract BeanOverrideUtils from BeanOverrideHandler
Prior to this commit, BeanOverrideHandler contained a large amount of logic solely related to search algorithms for finding handlers. Consequently, BeanOverrideHandler took on more responsibility than it ideally should. In addition, we will soon increase the complexity of those search algorithms, and we will need to make another utility method public for use outside the bean.override package. To address those issues, this commit extracts the search utilities from BeanOverrideHandler into a new BeanOverrideUtils class. Closes gh-36533
This commit is contained in:
+1
-1
@@ -401,7 +401,7 @@ class BeanOverrideBeanFactoryPostProcessorTests {
|
||||
|
||||
private static AnnotationConfigApplicationContext createContext(Class<?> testClass) {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
Set<BeanOverrideHandler> handlers = new LinkedHashSet<>(BeanOverrideTestUtils.findHandlers(testClass));
|
||||
Set<BeanOverrideHandler> handlers = new LinkedHashSet<>(BeanOverrideUtils.findHandlersForFields(testClass));
|
||||
new BeanOverrideContextCustomizer(handlers).customizeContext(context, mock(MergedContextConfiguration.class));
|
||||
return context;
|
||||
}
|
||||
|
||||
+5
-5
@@ -51,14 +51,14 @@ class BeanOverrideHandlerTests {
|
||||
|
||||
@Test
|
||||
void forTestClassWithSingleField() {
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideTestUtils.findHandlers(SingleAnnotation.class);
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideUtils.findHandlersForFields(SingleAnnotation.class);
|
||||
assertThat(handlers).singleElement().satisfies(hasBeanOverrideHandler(
|
||||
field(SingleAnnotation.class, "message"), String.class, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void forTestClassWithMultipleFields() {
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideTestUtils.findHandlers(MultipleAnnotations.class);
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideUtils.findHandlersForFields(MultipleAnnotations.class);
|
||||
assertThat(handlers).hasSize(2)
|
||||
.anySatisfy(hasBeanOverrideHandler(
|
||||
field(MultipleAnnotations.class, "message"), String.class, null))
|
||||
@@ -68,7 +68,7 @@ class BeanOverrideHandlerTests {
|
||||
|
||||
@Test
|
||||
void forTestClassWithMultipleFieldsWithIdenticalMetadata() {
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideTestUtils.findHandlers(MultipleAnnotationsDuplicate.class);
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideUtils.findHandlersForFields(MultipleAnnotationsDuplicate.class);
|
||||
assertThat(handlers).hasSize(2)
|
||||
.anySatisfy(hasBeanOverrideHandler(
|
||||
field(MultipleAnnotationsDuplicate.class, "message1"), String.class, "messageBean"))
|
||||
@@ -81,7 +81,7 @@ class BeanOverrideHandlerTests {
|
||||
void forTestClassWithCompetingBeanOverrideAnnotationsOnSameField() {
|
||||
Field faultyField = field(MultipleAnnotationsOnSameField.class, "message");
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> BeanOverrideTestUtils.findHandlers(MultipleAnnotationsOnSameField.class))
|
||||
.isThrownBy(() -> BeanOverrideUtils.findHandlersForFields(MultipleAnnotationsOnSameField.class))
|
||||
.withMessageStartingWith("Multiple @BeanOverride annotations found")
|
||||
.withMessageContaining(faultyField.toString());
|
||||
}
|
||||
@@ -90,7 +90,7 @@ class BeanOverrideHandlerTests {
|
||||
void forTestClassWithStaticBeanOverrideField() {
|
||||
Field staticField = field(StaticBeanOverrideField.class, "message");
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> BeanOverrideTestUtils.findHandlers(StaticBeanOverrideField.class))
|
||||
.isThrownBy(() -> BeanOverrideUtils.findHandlersForFields(StaticBeanOverrideField.class))
|
||||
.withMessage("@BeanOverride field must not be static: " + staticField);
|
||||
}
|
||||
|
||||
|
||||
-37
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Copyright 2002-present 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.test.context.bean.override;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Test utilities for Bean Overrides.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 6.2.2
|
||||
*/
|
||||
public abstract class BeanOverrideTestUtils {
|
||||
|
||||
public static List<BeanOverrideHandler> findHandlers(Class<?> testClass) {
|
||||
return BeanOverrideHandler.forTestClass(testClass);
|
||||
}
|
||||
|
||||
public static List<BeanOverrideHandler> findAllHandlers(Class<?> testClass) {
|
||||
return BeanOverrideHandler.findAllHandlers(testClass);
|
||||
}
|
||||
|
||||
}
|
||||
+4
-4
@@ -26,7 +26,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideStrategy;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -44,20 +44,20 @@ class TestBeanOverrideHandlerTests {
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToNullIfAnnotationNameIsEmpty() {
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideTestUtils.findHandlers(SampleOneOverride.class);
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideUtils.findHandlersForFields(SampleOneOverride.class);
|
||||
assertThat(handlers).singleElement().extracting(BeanOverrideHandler::getBeanName).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToAnnotationName() {
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideTestUtils.findHandlers(SampleOneOverrideWithName.class);
|
||||
List<BeanOverrideHandler> handlers = BeanOverrideUtils.findHandlersForFields(SampleOneOverrideWithName.class);
|
||||
assertThat(handlers).singleElement().extracting(BeanOverrideHandler::getBeanName).isEqualTo("anotherBean");
|
||||
}
|
||||
|
||||
@Test
|
||||
void failsWithMissingMethod() {
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> BeanOverrideTestUtils.findHandlers(SampleMissingMethod.class))
|
||||
.isThrownBy(() -> BeanOverrideUtils.findHandlersForFields(SampleMissingMethod.class))
|
||||
.withMessage("No static method found named message() in %s with return type %s",
|
||||
SampleMissingMethod.class.getName(), String.class.getName());
|
||||
}
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ import org.mockito.Answers;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -42,13 +42,13 @@ class MockitoBeanOverrideHandlerTests {
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToNullIfAnnotationNameIsEmpty() {
|
||||
List<BeanOverrideHandler> list = BeanOverrideTestUtils.findHandlers(SampleOneMock.class);
|
||||
List<BeanOverrideHandler> list = BeanOverrideUtils.findHandlersForFields(SampleOneMock.class);
|
||||
assertThat(list).singleElement().satisfies(handler -> assertThat(handler.getBeanName()).isNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToAnnotationName() {
|
||||
List<BeanOverrideHandler> list = BeanOverrideTestUtils.findHandlers(SampleOneMockWithName.class);
|
||||
List<BeanOverrideHandler> list = BeanOverrideUtils.findHandlersForFields(SampleOneMockWithName.class);
|
||||
assertThat(list).singleElement().satisfies(handler -> assertThat(handler.getBeanName()).isEqualTo("anotherService"));
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -38,13 +38,13 @@ class MockitoSpyBeanOverrideHandlerTests {
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToNullIfAnnotationNameIsEmpty() {
|
||||
List<BeanOverrideHandler> list = BeanOverrideTestUtils.findHandlers(SampleOneSpy.class);
|
||||
List<BeanOverrideHandler> list = BeanOverrideUtils.findHandlersForFields(SampleOneSpy.class);
|
||||
assertThat(list).singleElement().satisfies(handler -> assertThat(handler.getBeanName()).isNull());
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanNameIsSetToAnnotationName() {
|
||||
List<BeanOverrideHandler> list = BeanOverrideTestUtils.findHandlers(SampleOneSpyWithName.class);
|
||||
List<BeanOverrideHandler> list = BeanOverrideUtils.findHandlersForFields(SampleOneSpyWithName.class);
|
||||
assertThat(list).singleElement().satisfies(handler -> assertThat(handler.getBeanName()).isEqualTo("anotherService"));
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideUtils;
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean;
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBeans;
|
||||
|
||||
@@ -59,7 +59,7 @@ class MockitoBeansTests {
|
||||
|
||||
|
||||
private static Stream<Class<?>> getRegisteredMockTypes(Class<?> testClass) {
|
||||
return BeanOverrideTestUtils.findAllHandlers(testClass)
|
||||
return BeanOverrideUtils.findAllHandlers(testClass)
|
||||
.stream()
|
||||
.map(BeanOverrideHandler::getBeanType)
|
||||
.map(ResolvableType::getRawClass);
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils;
|
||||
import org.springframework.test.context.bean.override.BeanOverrideUtils;
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoSpyBeans;
|
||||
|
||||
@@ -59,7 +59,7 @@ class MockitoSpyBeansTests {
|
||||
|
||||
|
||||
private static Stream<Class<?>> getRegisteredMockTypes(Class<?> testClass) {
|
||||
return BeanOverrideTestUtils.findAllHandlers(testClass)
|
||||
return BeanOverrideUtils.findAllHandlers(testClass)
|
||||
.stream()
|
||||
.map(BeanOverrideHandler::getBeanType)
|
||||
.map(ResolvableType::getRawClass);
|
||||
|
||||
Reference in New Issue
Block a user