Revise bean override tests with a focus on AOT support
As a follow up to the previous commit (31f8e12adb), this commit
polishes bean override tests and revises them with a focus on AOT
testing support and simplified maintenance.
- Introduce EngineTestKitUtils to simplify working with JUnit's
EngineTestKit.
- Use idiomatic EngineTestKit APIs to simplify assertions on
EngineTestKit results.
- Introduce BeanOverrideTestSuite to simplify running all bean override
tests within the IDE.
- Separate failure and success scenario tests, so that failure tests do
not launch the JUnit Platform to run tests using the Spring
TestContext Framework (TCF) within a test class that itself uses the
TCF.
- Make AbstractTestBeanIntegrationTestCase actually abstract.
- Rename test case classes to give them meaningful names and simplify
understanding of what's being tested.
- Ensure tests for @MockitoSpyBean functionality use @MockitoSpyBean
instead of @MockitoBean.
- Declare @Configuration classes local to @SpringJUnitConfig test
classes whenever possible.
See gh-29122
See gh-32925
This commit is contained in:
@@ -133,7 +133,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
|
||||
Set<String> candidates = getExistingBeanNamesByType(beanFactory, overrideMetadata, true);
|
||||
if (candidates.size() != 1) {
|
||||
Field f = overrideMetadata.getField();
|
||||
throw new IllegalStateException("Unable to select a bean definition to override, " +
|
||||
throw new IllegalStateException("Unable to select a bean definition to override: " +
|
||||
candidates.size() + " bean definitions found of type " + overrideMetadata.getBeanType() +
|
||||
" (as required by annotated field '" + f.getDeclaringClass().getSimpleName() +
|
||||
"." + f.getName() + "')");
|
||||
@@ -147,7 +147,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
|
||||
existingBeanDefinition = beanFactory.getBeanDefinition(beanName);
|
||||
}
|
||||
else if (enforceExistingDefinition) {
|
||||
throw new IllegalStateException("Unable to override bean '" + beanName + "'; there is no" +
|
||||
throw new IllegalStateException("Unable to override bean '" + beanName + "': there is no" +
|
||||
" bean definition to replace with that name of type " + overrideMetadata.getBeanType());
|
||||
}
|
||||
}
|
||||
@@ -183,7 +183,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
|
||||
Set<String> candidateNames = getExistingBeanNamesByType(beanFactory, metadata, true);
|
||||
if (candidateNames.size() != 1) {
|
||||
Field f = metadata.getField();
|
||||
throw new IllegalStateException("Unable to select a bean to override by wrapping, " +
|
||||
throw new IllegalStateException("Unable to select a bean to override by wrapping: " +
|
||||
candidateNames.size() + " bean instances found of type " + metadata.getBeanType() +
|
||||
" (as required by annotated field '" + f.getDeclaringClass().getSimpleName() +
|
||||
"." + f.getName() + "')");
|
||||
@@ -193,7 +193,7 @@ class BeanOverrideBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
|
||||
else {
|
||||
Set<String> candidates = getExistingBeanNamesByType(beanFactory, metadata, false);
|
||||
if (!candidates.contains(beanName)) {
|
||||
throw new IllegalStateException("Unable to override bean '" + beanName + "' by wrapping; there is no" +
|
||||
throw new IllegalStateException("Unable to override bean '" + beanName + "' by wrapping: there is no" +
|
||||
" existing bean instance with that name of type " + metadata.getBeanType());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user