From 94871e20eced9bc4d1e4590ff30b251d1c5d0872 Mon Sep 17 00:00:00 2001 From: sorie Date: Mon, 14 Mar 2022 20:10:15 +0800 Subject: [PATCH] Replace powermock with mockito in Nacos Discovery --- .../pom.xml | 12 ++--- ...PropertiesServerAddressBothLevelTests.java | 5 +- ...yPropertiesServerAddressTopLevelTests.java | 5 +- ...ceRegistrationIpNetworkInterfaceTests.java | 44 ++++++----------- .../NacosAutoServiceRegistrationIpTests.java | 42 ++++++----------- ...erviceRegistrationManagementPortTests.java | 42 ++++++----------- ...NacosAutoServiceRegistrationPortTests.java | 42 ++++++----------- .../NacosAutoServiceRegistrationTests.java | 42 ++++++----------- .../NacosRegistrationCustomizerTest.java | 47 +++++++------------ 9 files changed, 92 insertions(+), 189 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml index 269c03e16..0ffad3938 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml @@ -119,18 +119,12 @@ - org.powermock - powermock-module-junit4 - 2.0.0 + org.mockito + mockito-inline + 4.0.0 test - - org.powermock - powermock-api-mockito2 - 2.0.0 - test - diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java index 9a54b2ae1..dfdb20c16 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java @@ -18,8 +18,7 @@ package com.alibaba.cloud.nacos; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -27,7 +26,6 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static com.alibaba.cloud.nacos.NacosDiscoveryPropertiesServerAddressBothLevelTests.TestConfig; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +33,6 @@ import static org.assertj.core.api.Assertions.assertThat; /** * @author lyuzb */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = TestConfig.class, properties = { "spring.application.name=app", "spring.cloud.nacos.discovery.server-addr=321.321.321.321:8848", diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java index fb24e6e80..7af7b7955 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java @@ -18,8 +18,7 @@ package com.alibaba.cloud.nacos; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -27,7 +26,6 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static com.alibaba.cloud.nacos.NacosDiscoveryPropertiesServerAddressTopLevelTests.TestConfig; import static org.assertj.core.api.Assertions.assertThat; @@ -36,7 +34,6 @@ import static org.assertj.core.api.Assertions.assertThat; * @author lyuzb * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = TestConfig.class, properties = { "spring.application.name=app", "spring.cloud.nacos.server-addr=123.123.123.123:8848" }) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpNetworkInterfaceTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpNetworkInterfaceTests.java index dc8f53762..0a3520653 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpNetworkInterfaceTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpNetworkInterfaceTests.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; @@ -27,14 +25,10 @@ import java.util.Properties; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -43,19 +37,15 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author xiaojing */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest( classes = NacosAutoServiceRegistrationIpNetworkInterfaceTests.TestConfig.class, properties = { "spring.application.name=myTestService1", @@ -74,24 +64,18 @@ public class NacosAutoServiceRegistrationIpNetworkInterfaceTests { @Autowired private InetUtils inetUtils; - + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } - @Test public void contextLoads() throws Exception { assertThat(registration).isNotNull(); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpTests.java index 99fef7670..cc83e625b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationIpTests.java @@ -16,21 +16,15 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.util.Properties; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -38,19 +32,15 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author xiaojing */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest(classes = NacosAutoServiceRegistrationIpTests.TestConfig.class, properties = { "spring.application.name=myTestService1", "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848", @@ -67,20 +57,16 @@ public class NacosAutoServiceRegistrationIpTests { @Autowired private NacosDiscoveryProperties properties; + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationManagementPortTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationManagementPortTests.java index 83989ca84..3ea43225b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationManagementPortTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationManagementPortTests.java @@ -16,21 +16,15 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.util.Properties; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -38,19 +32,15 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author xiaojing */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest( classes = NacosAutoServiceRegistrationManagementPortTests.TestConfig.class, properties = { "spring.application.name=myTestService1", @@ -70,20 +60,16 @@ public class NacosAutoServiceRegistrationManagementPortTests { @Autowired private NacosDiscoveryProperties properties; + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationPortTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationPortTests.java index 1c52b3918..0074bf4c5 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationPortTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationPortTests.java @@ -16,21 +16,15 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.util.Properties; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -38,19 +32,15 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author xiaojing */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest(classes = NacosAutoServiceRegistrationPortTests.TestConfig.class, properties = { "spring.application.name=myTestService1", "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848", @@ -67,20 +57,16 @@ public class NacosAutoServiceRegistrationPortTests { @Autowired private NacosDiscoveryProperties properties; + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationTests.java index 1fbac697f..9c79e25a5 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosAutoServiceRegistrationTests.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.util.Map; import java.util.Properties; @@ -26,14 +24,10 @@ import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpoint; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -43,19 +37,15 @@ import org.springframework.boot.web.server.LocalServerPort; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author xiaojing */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest(classes = NacosAutoServiceRegistrationTests.TestConfig.class, properties = { "spring.application.name=myTestService1", "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848", @@ -93,20 +83,16 @@ public class NacosAutoServiceRegistrationTests { @Autowired private InetUtils inetUtils; + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java index 139e9f812..4aa66d18f 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java @@ -16,22 +16,16 @@ package com.alibaba.cloud.nacos.registry; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; import java.util.Map; import java.util.Properties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.api.support.MethodProxy; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -40,17 +34,13 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; +import static org.mockito.ArgumentMatchers.any; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** * @author L.cm */ -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ NacosFactory.class }) @SpringBootTest(classes = NacosRegistrationCustomizerTest.TestConfig.class, properties = { "spring.application.name=myTestService1", "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848" }, @@ -60,28 +50,25 @@ public class NacosRegistrationCustomizerTest { @Autowired private NacosAutoServiceRegistration nacosAutoServiceRegistration; + private static MockedStatic nacosFactoryMockedStatic; static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); + nacosFactoryMockedStatic = Mockito.mockStatic(NacosFactory.class); + nacosFactoryMockedStatic.when(() -> NacosFactory.createNamingService((Properties) any())) + .thenReturn(new MockNamingService()); + } + @AfterAll + public static void finished() { + if (nacosFactoryMockedStatic != null) { + nacosFactoryMockedStatic.close(); } } + @Test public void contextLoads() throws Exception { NacosRegistration registration = nacosAutoServiceRegistration.getRegistration(); Map metadata = registration.getMetadata(); - Assert.assertEquals("test1", metadata.get("test1")); + Assertions.assertEquals("test1", metadata.get("test1")); } @Configuration