Revise Bean Override internals and Javadoc
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user