diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolver.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolver.java deleted file mode 100644 index c78ce88b213e..000000000000 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolver.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2012-2024 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.boot.test.mock.mockito; - -import org.mockito.plugins.MockResolver; - -import org.springframework.aop.TargetSource; -import org.springframework.aop.framework.Advised; -import org.springframework.aop.support.AopUtils; -import org.springframework.test.context.bean.override.mockito.MockitoBean; -import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; -import org.springframework.util.Assert; - -/** - * A {@link MockResolver} for testing Spring Boot applications with Mockito. It resolves - * mocks by walking the proxy chain until the target or a non-static proxy is found. - * - * @author Andy Wilkinson - * @since 2.4.0 - * @deprecated since 3.4.0 for removal in 3.6.0 in favor of Spring Framework's - * {@link MockitoBean} and {@link MockitoSpyBean} - */ -@Deprecated(since = "3.4.0", forRemoval = true) -public class SpringBootMockResolver implements MockResolver { - - @Override - public Object resolve(Object instance) { - return getUltimateTargetObject(instance); - } - - @SuppressWarnings("unchecked") - private static T getUltimateTargetObject(Object candidate) { - Assert.notNull(candidate, "Candidate must not be null"); - try { - if (AopUtils.isAopProxy(candidate) && candidate instanceof Advised advised) { - TargetSource targetSource = advised.getTargetSource(); - if (targetSource.isStatic()) { - Object target = targetSource.getTarget(); - if (target != null) { - return getUltimateTargetObject(target); - } - } - } - } - catch (Throwable ex) { - throw new IllegalStateException("Failed to unwrap proxied object", ex); - } - return (T) candidate; - } - -} diff --git a/spring-boot-project/spring-boot-test/src/main/resources/mockito-extensions/org.mockito.plugins.MockResolver b/spring-boot-project/spring-boot-test/src/main/resources/mockito-extensions/org.mockito.plugins.MockResolver deleted file mode 100644 index 3646a4b77555..000000000000 --- a/spring-boot-project/spring-boot-test/src/main/resources/mockito-extensions/org.mockito.plugins.MockResolver +++ /dev/null @@ -1 +0,0 @@ -org.springframework.boot.test.mock.mockito.SpringBootMockResolver \ No newline at end of file diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverIntegrationTests.java b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverIntegrationTests.java deleted file mode 100644 index 04990b5c5292..000000000000 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverIntegrationTests.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2012-2024 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.boot.test.mock.mockito; - -import org.assertj.core.api.Condition; -import org.junit.jupiter.api.Test; -import org.mockito.internal.configuration.plugins.Plugins; -import org.mockito.plugins.MockResolver; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Integration tests for {@link SpringBootMockResolver}. - * - * @author Andy Wilkinson - * @deprecated since 3.4.0 for removal in 3.6.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class SpringBootMockResolverIntegrationTests { - - @Test - void customMockResolverIsRegisteredWithMockito() { - assertThat(Plugins.getMockResolvers()).haveAtLeastOne(new Condition( - SpringBootMockResolver.class::isInstance, "Spring Boot mock resolver instance")); - } - -} diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverTests.java b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverTests.java deleted file mode 100644 index 138bf78ae132..000000000000 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpringBootMockResolverTests.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2012-2024 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.boot.test.mock.mockito; - -import org.junit.jupiter.api.Test; - -import org.springframework.aop.SpringProxy; -import org.springframework.aop.framework.ProxyFactory; -import org.springframework.aop.target.HotSwappableTargetSource; -import org.springframework.aop.target.SingletonTargetSource; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link SpringBootMockResolver}. - * - * @author Moritz Halbritter - * @deprecated since 3.4.0 for removal in 3.6.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class SpringBootMockResolverTests { - - @Test - void testStaticTarget() { - MyServiceImpl myService = new MyServiceImpl(); - MyService proxy = ProxyFactory.getProxy(MyService.class, new SingletonTargetSource(myService)); - Object target = new SpringBootMockResolver().resolve(proxy); - assertThat(target).isInstanceOf(MyServiceImpl.class); - } - - @Test - void testNonStaticTarget() { - MyServiceImpl myService = new MyServiceImpl(); - MyService proxy = ProxyFactory.getProxy(MyService.class, new HotSwappableTargetSource(myService)); - Object target = new SpringBootMockResolver().resolve(proxy); - assertThat(target).isInstanceOf(SpringProxy.class); - } - - private interface MyService { - - int a(); - - } - - private static final class MyServiceImpl implements MyService { - - @Override - public int a() { - return 1; - } - - } - -}