Remove proxyTargetAware attribute from @⁠MockitoSpyBean

This commit removes the proxyTargetAware attribute from @⁠MockitoSpyBean
while keeping the underlying feature in tact (i.e., transparent
verification for spies created via @⁠MockitoSpyBean).

Closes gh-33775
This commit is contained in:
Sam Brannen
2024-10-23 16:23:21 +02:00
parent 20d21a8251
commit 5bf179b851
6 changed files with 32 additions and 89 deletions

View File

@@ -34,50 +34,45 @@ class MockitoBeanContextCustomizerEqualityTests {
@Test
void contextCustomizerWithSameMockByNameInDifferentClassIsEqual() {
assertThat(createContextCustomizer(Case1ByName.class)).isEqualTo(createContextCustomizer(Case2ByName.class));
assertThat(customizerFor(Case1ByName.class)).isEqualTo(customizerFor(Case2ByName.class));
}
@Test
void contextCustomizerWithSameMockByTypeInDifferentClassIsEqual() {
assertThat(createContextCustomizer(Case1ByType.class)).isEqualTo(createContextCustomizer(Case2ByTypeSameFieldName.class));
assertThat(customizerFor(Case1ByType.class)).isEqualTo(customizerFor(Case2ByTypeSameFieldName.class));
}
@Test
void contextCustomizerWithSameMockByTypeAndDifferentFieldNamesAreNotEqual() {
assertThat(createContextCustomizer(Case1ByType.class)).isNotEqualTo(createContextCustomizer(Case2ByType.class));
assertThat(customizerFor(Case1ByType.class)).isNotEqualTo(customizerFor(Case2ByType.class));
}
@Test
void contextCustomizerWithSameSpyByNameInDifferentClassIsEqual() {
assertThat(createContextCustomizer(Case4ByName.class)).isEqualTo(createContextCustomizer(Case5ByName.class));
assertThat(customizerFor(Case4ByName.class)).isEqualTo(customizerFor(Case5ByName.class));
}
@Test
void contextCustomizerWithSameSpyByTypeInDifferentClassIsEqual() {
assertThat(createContextCustomizer(Case4ByType.class)).isEqualTo(createContextCustomizer(Case5ByTypeSameFieldName.class));
assertThat(customizerFor(Case4ByType.class)).isEqualTo(customizerFor(Case5ByTypeSameFieldName.class));
}
@Test
void contextCustomizerWithSameSpyByTypeAndDifferentFieldNamesAreNotEqual() {
assertThat(createContextCustomizer(Case4ByType.class)).isNotEqualTo(createContextCustomizer(Case5ByType.class));
assertThat(customizerFor(Case4ByType.class)).isNotEqualTo(customizerFor(Case5ByType.class));
}
@Test
void contextCustomizerWithSimilarMockButDifferentAnswersIsNotEqual() {
assertThat(createContextCustomizer(Case1ByType.class)).isNotEqualTo(createContextCustomizer(Case3.class));
}
@Test
void contextCustomizerWithSimilarSpyButDifferentProxyTargetClassFlagIsNotEqual() {
assertThat(createContextCustomizer(Case5ByType.class)).isNotEqualTo(createContextCustomizer(Case6.class));
assertThat(customizerFor(Case1ByType.class)).isNotEqualTo(customizerFor(Case3.class));
}
@Test
void contextCustomizerWithMockAndSpyAreNotEqual() {
assertThat(createContextCustomizer(Case1ByType.class)).isNotEqualTo(createContextCustomizer(Case4ByType.class));
assertThat(customizerFor(Case1ByType.class)).isNotEqualTo(customizerFor(Case4ByType.class));
}
private ContextCustomizer createContextCustomizer(Class<?> testClass) {
private ContextCustomizer customizerFor(Class<?> testClass) {
ContextCustomizer customizer = BeanOverrideContextCustomizerTestUtils.createContextCustomizer(testClass);
assertThat(customizer).isNotNull();
return customizer;
@@ -160,11 +155,4 @@ class MockitoBeanContextCustomizerEqualityTests {
}
static class Case6 {
@MockitoSpyBean(proxyTargetAware = false)
private String serviceToMock;
}
}

View File

@@ -49,63 +49,46 @@ class MockitoSpyBeanOverrideHandlerTests {
@Test
void isEqualToWithSameInstance() {
MockitoSpyBeanOverrideHandler handler = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler = handlerFor("service");
assertThat(handler).isEqualTo(handler);
assertThat(handler).hasSameHashCodeAs(handler);
}
@Test
void isEqualToWithSameMetadata() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler1 = handlerFor("service");
MockitoSpyBeanOverrideHandler handler2 = handlerFor("service");
assertThat(handler1).isEqualTo(handler2);
assertThat(handler1).hasSameHashCodeAs(handler2);
}
@Test
void isNotEqualToByTypeLookupWithSameMetadataButDifferentField() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service2"));
assertThat(handler1).isNotEqualTo(handler2);
assertThat(handlerFor("service")).isNotEqualTo(handlerFor("service2"));
}
@Test
void isEqualToByNameLookupWithSameMetadataButDifferentField() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service3"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service4"));
MockitoSpyBeanOverrideHandler handler1 = handlerFor("service3");
MockitoSpyBeanOverrideHandler handler2 = handlerFor("service4");
assertThat(handler1).isEqualTo(handler2);
assertThat(handler1).hasSameHashCodeAs(handler2);
}
@Test
void isNotEqualToWithSameMetadataButDifferentBeanName() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service3"));
assertThat(handler1).isNotEqualTo(handler2);
assertThat(handlerFor("service")).isNotEqualTo(handlerFor("service3"));
}
@Test
void isNotEqualToWithSameMetadataButDifferentReset() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service5"));
assertThat(handler1).isNotEqualTo(handler2);
}
@Test
void isNotEqualToWithSameMetadataButDifferentProxyTargetAwareFlag() {
MockitoSpyBeanOverrideHandler handler1 = createBeanOverrideHandler(sampleField("service"));
MockitoSpyBeanOverrideHandler handler2 = createBeanOverrideHandler(sampleField("service6"));
assertThat(handler1).isNotEqualTo(handler2);
assertThat(handlerFor("service")).isNotEqualTo(handlerFor("service5"));
}
private Field sampleField(String fieldName) {
private static MockitoSpyBeanOverrideHandler handlerFor(String fieldName) {
Field field = ReflectionUtils.findField(Sample.class, fieldName);
assertThat(field).isNotNull();
return field;
}
private MockitoSpyBeanOverrideHandler createBeanOverrideHandler(Field field) {
MockitoSpyBean annotation = AnnotatedElementUtils.getMergedAnnotation(field, MockitoSpyBean.class);
return new MockitoSpyBeanOverrideHandler(field, ResolvableType.forClass(field.getType()), annotation);
}
@@ -142,9 +125,6 @@ class MockitoSpyBeanOverrideHandlerTests {
@MockitoSpyBean(reset = MockReset.BEFORE)
private String service5;
@MockitoSpyBean(proxyTargetAware = false)
private String service6;
}
}