Revise Bean Override internals and Javadoc

This commit is contained in:
Sam Brannen
2024-09-28 14:33:38 +02:00
parent 56f3a48879
commit 40ca83dfd4
19 changed files with 150 additions and 145 deletions

View File

@@ -21,7 +21,6 @@ import java.lang.reflect.Field;
import org.easymock.EasyMock;
import org.easymock.MockType;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.SingletonBeanRegistry;
import org.springframework.core.ResolvableType;
@@ -62,17 +61,15 @@ class EasyMockBeanOverrideMetadata extends OverrideMetadata {
getEasyMockBeans(singletonBeanRegistry).add(mock);
}
private EasyMockBeans getEasyMockBeans(SingletonBeanRegistry singletonBeanRegistry) {
String className = EasyMockBeans.class.getName();
private static EasyMockBeans getEasyMockBeans(SingletonBeanRegistry singletonBeanRegistry) {
String beanName = EasyMockBeans.class.getName();
EasyMockBeans easyMockBeans = null;
try {
easyMockBeans = (EasyMockBeans) singletonBeanRegistry.getSingleton(className);
}
catch (NoSuchBeanDefinitionException ignored) {
if (singletonBeanRegistry.containsSingleton(beanName)) {
easyMockBeans = (EasyMockBeans) singletonBeanRegistry.getSingleton(beanName);
}
if (easyMockBeans == null) {
easyMockBeans = new EasyMockBeans();
singletonBeanRegistry.registerSingleton(className, easyMockBeans);
singletonBeanRegistry.registerSingleton(beanName, easyMockBeans);
}
return easyMockBeans;
}

View File

@@ -34,7 +34,7 @@ class EasyMockBeanOverrideProcessor implements BeanOverrideProcessor {
@Override
public OverrideMetadata createMetadata(Annotation annotation, Class<?> testClass, Field field) {
EasyMockBean easyMockBean = (EasyMockBean) annotation;
String beanName = (StringUtils.hasText(easyMockBean.name()) ? easyMockBean.name() : field.getName());
String beanName = (StringUtils.hasText(easyMockBean.name()) ? easyMockBean.name() : null);
return new EasyMockBeanOverrideMetadata(field, field.getType(), beanName, easyMockBean.mockType());
}

View File

@@ -16,6 +16,7 @@
package org.springframework.test.context.bean.override.easymock;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
@@ -55,7 +56,15 @@ class EasyMockResetTestExecutionListener extends AbstractTestExecutionListener {
private void resetMocks(ConfigurableApplicationContext applicationContext) {
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
beanFactory.getBean(EasyMockBeans.class).resetAll();
try {
beanFactory.getBean(EasyMockBeans.class).resetAll();
}
catch (NoSuchBeanDefinitionException ex) {
// Continue
}
if (applicationContext.getParent() != null) {
resetMocks(applicationContext.getParent());
}
}
}

View File

@@ -64,8 +64,8 @@ public class MockitoBeanOverrideProcessorTests {
assertThatIllegalStateException()
.isThrownBy(() -> this.processor.createMetadata(annotation, clazz, field))
.withMessage("Invalid annotation passed to MockitoBeanOverrideProcessor: expected " +
"@MockitoBean/@MockitoSpyBean on field %s.%s", field.getDeclaringClass().getName(),
.withMessage("Invalid annotation passed to MockitoBeanOverrideProcessor: expected either " +
"@MockitoBean or @MockitoSpyBean on field %s.%s", field.getDeclaringClass().getName(),
field.getName());
}