This is an automated email from the ASF dual-hosted git repository.

jianbin pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git


The following commit(s) were added to refs/heads/2.x by this push:
     new f8e0bd5a28 test: fix the exception caused by the disorder of test case 
execution order (#7580)
f8e0bd5a28 is described below

commit f8e0bd5a28b7bf6bae2f148c799b8be488161b45
Author: funkye <[email protected]>
AuthorDate: Wed Aug 13 09:08:17 2025 +0800

    test: fix the exception caused by the disorder of test case execution order 
(#7580)
---
 changes/en-us/2.x.md                               |  1 +
 changes/zh-cn/2.x.md                               |  2 +-
 .../core/rpc/netty/RmNettyRemotingClient.java      |  1 +
 .../org/apache/seata/mockserver/MockServer.java    |  6 ++
 .../java/org/apache/seata/server/ServerRunner.java |  2 +-
 .../apache/seata/server/session/SessionHolder.java |  5 +-
 .../spring/listener/ServerApplicationListener.java |  1 +
 .../apache/seata/server/BaseSpringBootTest.java    | 52 +++++++++++++++++
 .../apache/seata/server/DynamicPortTestConfig.java | 45 ---------------
 .../org/apache/seata/server/LoaderConfTest.java    |  6 +-
 .../apache/seata/server/ParameterParserTest.java   |  6 +-
 .../server/controller/ClusterControllerTest.java   | 24 ++++----
 .../server/coordinator/DefaultCoordinatorTest.java |  8 +--
 .../seata/server/coordinator/DefaultCoreTest.java  |  8 +--
 .../apache/seata/server/env/PortHelperTest.java    |  2 +-
 .../server/event/DefaultCoreForEventBusTest.java   |  8 +--
 .../server/lock/DistributedLockerFactoryTest.java  |  8 +--
 .../apache/seata/server/lock/LockManagerTest.java  |  8 +--
 .../lock/db/DataBaseLockManagerImplTest.java       |  8 +--
 .../server/lock/db/DataBaseLockStoreDAOTest.java   |  8 +--
 .../server/lock/file/FileLockManagerImplTest.java  |  8 +--
 .../server/lock/redis/RedisLockManagerTest.java    | 10 +---
 .../server/lock/redis/RedisLuaLockManagerTest.java |  5 --
 .../apache/seata/server/logging/AppenderTest.java  |  8 +--
 .../apache/seata/server/raft/RaftServerTest.java   |  8 +--
 .../seata/server/raft/RaftSyncMessageTest.java     |  8 +--
 .../raft/execute/BranchSessionExecuteTest.java     |  8 +--
 .../raft/execute/GlobalSessionExecuteTest.java     |  8 +--
 .../seata/server/raft/execute/LockExecuteTest.java | 10 +---
 .../server/ratelimiter/RateLimiterHandlerTest.java |  8 +--
 .../server/ratelimiter/TokenBucketLimiterTest.java |  8 +--
 .../seata/server/session/BranchSessionTest.java    |  8 +--
 .../server/session/FileSessionManagerTest.java     |  8 +--
 .../seata/server/session/GlobalSessionTest.java    |  8 +--
 .../seata/server/session/SessionHolderTest.java    |  8 +--
 .../server/session/SessionStatusValidatorTest.java |  8 +--
 .../session/db/DataBaseSessionManagerTest.java     |  8 +--
 .../session/redis/RedisDistributedLockerTest.java  |  8 +--
 .../redis/RedisLuaTransactionStoreManagerTest.java |  5 --
 .../server/session/redis/RedisQueryConsolTest.java |  8 +--
 .../session/redis/RedisSessionManagerTest.java     |  8 +--
 .../redis/RedisTransactionStoreManagerTest.java    |  8 +--
 .../server/session/redis/SessionConverterTest.java |  8 +--
 .../ClearServerServicePortInitializer.java         | 65 ++++++++++++++++++++++
 .../store/FileVGroupMappingStoreManagerTest.java   |  8 +--
 .../store/RaftVGroupMappingStoreManagerTest.java   |  8 +--
 .../store/RedisVGroupMappingStoreManagerTest.java  |  8 +--
 .../store/RaftSyncMessageSerializerTest.java       | 10 +---
 .../seata/server/store/SessionStoreTest.java       | 27 +++++----
 .../store/db/AbstractDataSourceProviderTest.java   | 10 +---
 .../server/store/db/LogStoreDataBaseDAOTest.java   | 10 +---
 .../file/FileTransactionStoreManagerTest.java      | 10 +---
 .../spring.factories}                              |  6 +-
 server/src/test/resources/application.properties   |  2 -
 .../AdapterSpringSeataInterceptorTest.java         |  2 +
 .../annotation/GlobalTransactionScannerTest.java   |  7 +++
 56 files changed, 242 insertions(+), 322 deletions(-)

diff --git a/changes/en-us/2.x.md b/changes/en-us/2.x.md
index 7f1add0791..99ea9240c8 100644
--- a/changes/en-us/2.x.md
+++ b/changes/en-us/2.x.md
@@ -50,6 +50,7 @@ Add changes here for all PR submitted to the 2.x branch.
 
 - [[#7541](https://github.com/seata/seata/pull/7541)] fix jakarta UT failed in 
jdk17+
 - [[#7540](https://github.com/seata/seata/pull/7540)] fix port of mock server
+- [[#7580](https://github.com/seata/seata/pull/7580)]  fix the exception 
caused by the disorder of test case execution order
 
 
 ### refactor:
diff --git a/changes/zh-cn/2.x.md b/changes/zh-cn/2.x.md
index 70abe17143..f87de6e290 100644
--- a/changes/zh-cn/2.x.md
+++ b/changes/zh-cn/2.x.md
@@ -49,7 +49,7 @@
 - [[#7541](https://github.com/seata/seata/pull/7541)] 修复 jakarta 依赖在 jdk17+ 
单测失败问题
 - [[#7540](https://github.com/seata/seata/pull/7540)] 修复mock server端口冲突问题
 - [[#7578](https://github.com/seata/seata/pull/7578)]  
zstd解压由jni改为ZstdInputStream
-
+- [[#7580](https://github.com/seata/seata/pull/7580)]  修复测试用例顺序错乱导致的异常
 
 ### refactor:
 
diff --git 
a/core/src/main/java/org/apache/seata/core/rpc/netty/RmNettyRemotingClient.java 
b/core/src/main/java/org/apache/seata/core/rpc/netty/RmNettyRemotingClient.java
index 7cc8fc7d79..5987a18354 100644
--- 
a/core/src/main/java/org/apache/seata/core/rpc/netty/RmNettyRemotingClient.java
+++ 
b/core/src/main/java/org/apache/seata/core/rpc/netty/RmNettyRemotingClient.java
@@ -320,6 +320,7 @@ public final class RmNettyRemotingClient extends 
AbstractNettyRemotingClient {
         super.destroy();
         initialized.getAndSet(false);
         instance = null;
+        transactionServiceGroup = null;
     }
 
     @Override
diff --git 
a/mock-server/src/main/java/org/apache/seata/mockserver/MockServer.java 
b/mock-server/src/main/java/org/apache/seata/mockserver/MockServer.java
index 195881f58c..df980215b8 100644
--- a/mock-server/src/main/java/org/apache/seata/mockserver/MockServer.java
+++ b/mock-server/src/main/java/org/apache/seata/mockserver/MockServer.java
@@ -23,6 +23,8 @@ import org.apache.seata.common.thread.NamedThreadFactory;
 import org.apache.seata.common.util.NetUtil;
 import org.apache.seata.common.util.NumberUtils;
 import org.apache.seata.common.util.UUIDGenerator;
+import org.apache.seata.config.ConfigurationCache;
+import org.apache.seata.core.constants.ConfigurationKeys;
 import org.apache.seata.core.rpc.netty.NettyServerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -74,6 +76,10 @@ public class MockServer {
         if (!inited) {
             synchronized (MockServer.class) {
                 if (!inited) {
+                    ConfigurationCache.clear();
+                    // Clear the property for any of the supported events
+                    
System.clearProperty(ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+                    System.clearProperty("server.port");
                     inited = true;
                     workingThreads = new ThreadPoolExecutor(
                             50,
diff --git a/server/src/main/java/org/apache/seata/server/ServerRunner.java 
b/server/src/main/java/org/apache/seata/server/ServerRunner.java
index ff581481cb..9d49a16042 100644
--- a/server/src/main/java/org/apache/seata/server/ServerRunner.java
+++ b/server/src/main/java/org/apache/seata/server/ServerRunner.java
@@ -82,7 +82,6 @@ public class ServerRunner implements CommandLineRunner, 
DisposableBean, Applicat
         if (LOGGER.isDebugEnabled()) {
             LOGGER.debug("destoryAll starting");
         }
-
         for (Disposable disposable : DISPOSABLE_LIST) {
             disposable.destroy();
         }
@@ -90,6 +89,7 @@ public class ServerRunner implements CommandLineRunner, 
DisposableBean, Applicat
         if (LOGGER.isDebugEnabled()) {
             LOGGER.debug("destoryAll finish");
         }
+        DISPOSABLE_LIST.clear();
     }
 
     @Override
diff --git 
a/server/src/main/java/org/apache/seata/server/session/SessionHolder.java 
b/server/src/main/java/org/apache/seata/server/session/SessionHolder.java
index 7c076cc502..32baf18150 100644
--- a/server/src/main/java/org/apache/seata/server/session/SessionHolder.java
+++ b/server/src/main/java/org/apache/seata/server/session/SessionHolder.java
@@ -48,7 +48,6 @@ import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 
 import static java.io.File.separator;
-import static 
org.apache.seata.common.ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL;
 import static 
org.apache.seata.common.DefaultValues.DEFAULT_DISTRIBUTED_LOCK_EXPIRE_TIME;
 import static org.apache.seata.common.DefaultValues.DEFAULT_SEATA_GROUP;
 import static 
org.apache.seata.common.DefaultValues.DEFAULT_SESSION_STORE_FILE_DIR;
@@ -125,11 +124,11 @@ public class SessionHolder {
                 String vGroupMappingStorePath =
                         CONFIG.getConfig(ConfigurationKeys.STORE_FILE_DIR, 
DEFAULT_VGROUP_MAPPING_STORE_FILE_DIR)
                                 + separator
-                                + 
System.getProperty(SERVER_SERVICE_PORT_CAMEL);
+                                + XID.getPort();
                 String sessionStorePath =
                         CONFIG.getConfig(ConfigurationKeys.STORE_FILE_DIR, 
DEFAULT_SESSION_STORE_FILE_DIR)
                                 + separator
-                                + 
System.getProperty(SERVER_SERVICE_PORT_CAMEL);
+                                + XID.getPort();
                 if (StringUtils.isBlank(sessionStorePath) || 
StringUtils.isBlank(vGroupMappingStorePath)) {
                     throw new StoreException("the {store.file.dir} is empty.");
                 }
diff --git 
a/server/src/main/java/org/apache/seata/server/spring/listener/ServerApplicationListener.java
 
b/server/src/main/java/org/apache/seata/server/spring/listener/ServerApplicationListener.java
index 3f1a06c7d0..21c0dcd822 100644
--- 
a/server/src/main/java/org/apache/seata/server/spring/listener/ServerApplicationListener.java
+++ 
b/server/src/main/java/org/apache/seata/server/spring/listener/ServerApplicationListener.java
@@ -114,6 +114,7 @@ public class ServerApplicationListener implements 
GenericApplicationListener {
             // add property source to the first position
             Properties pro = new Properties();
             pro.setProperty(SERVER_SERVICE_PORT_CONFIG, port);
+            pro.setProperty(SERVER_SERVICE_PORT_CAMEL, port);
             environment.getPropertySources().addFirst(new 
PropertiesPropertySource("serverProperties", pro));
         }
     }
diff --git 
a/server/src/test/java/org/apache/seata/server/BaseSpringBootTest.java 
b/server/src/test/java/org/apache/seata/server/BaseSpringBootTest.java
new file mode 100644
index 0000000000..927dd08b1b
--- /dev/null
+++ b/server/src/test/java/org/apache/seata/server/BaseSpringBootTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *     http://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.apache.seata.server;
+
+import org.apache.seata.config.ConfigurationCache;
+import org.apache.seata.config.ConfigurationFactory;
+import org.apache.seata.core.constants.ConfigurationKeys;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.TestPropertySource;
+
+@TestPropertySource(properties = {"server.port=${random.int[10000,60000]}"})
+@SpringBootTest
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
+public abstract class BaseSpringBootTest {
+
+    @BeforeAll
+    public static void beforeAll() {
+        System.setProperty(ConfigurationKeys.SHUTDOWN_WAIT, "1");
+        ConfigurationCache.clear();
+        System.clearProperty(ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+    }
+
+    @AfterAll
+    public static void afterAll() {
+        ConfigurationCache.clear();
+        System.clearProperty(ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+    }
+
+    @AfterEach
+    public void AfterEach() {
+        ConfigurationFactory.reload();
+        System.clearProperty(ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+    }
+}
diff --git 
a/server/src/test/java/org/apache/seata/server/DynamicPortTestConfig.java 
b/server/src/test/java/org/apache/seata/server/DynamicPortTestConfig.java
deleted file mode 100644
index bd00461c83..0000000000
--- a/server/src/test/java/org/apache/seata/server/DynamicPortTestConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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
- *
- *     http://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.apache.seata.server;
-
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.test.context.DynamicPropertyRegistry;
-import org.springframework.test.context.DynamicPropertySource;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-
-@TestConfiguration
-public class DynamicPortTestConfig {
-    @DynamicPropertySource
-    static void dynamicProperties(DynamicPropertyRegistry registry) throws 
IOException {
-        try (ServerSocket serverSocket = new ServerSocket(0);
-                ServerSocket exporterSocket = new ServerSocket(0); ) {
-            int servicePort = serverSocket.getLocalPort();
-            int exporterPort = exporterSocket.getLocalPort();
-
-            registry.add("server.servicePort", () -> 
String.valueOf(servicePort));
-            registry.add("metrics.exporter.prometheus.port", () -> 
String.valueOf(exporterPort));
-
-            System.clearProperty("server.servicePort");
-            System.clearProperty("metrics.exporter.prometheus.port");
-
-            System.setProperty("server.servicePort", 
String.valueOf(servicePort));
-            System.setProperty("metrics.exporter.prometheus.port", 
String.valueOf(exporterPort));
-        }
-    }
-}
diff --git a/server/src/test/java/org/apache/seata/server/LoaderConfTest.java 
b/server/src/test/java/org/apache/seata/server/LoaderConfTest.java
index 071a94d482..811615dcf0 100644
--- a/server/src/test/java/org/apache/seata/server/LoaderConfTest.java
+++ b/server/src/test/java/org/apache/seata/server/LoaderConfTest.java
@@ -19,17 +19,13 @@ package org.apache.seata.server;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 import org.springframework.core.env.Environment;
 
 /**
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class LoaderConfTest {
+public class LoaderConfTest extends BaseSpringBootTest {
 
     static Environment environment;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/ParameterParserTest.java 
b/server/src/test/java/org/apache/seata/server/ParameterParserTest.java
index 4468a11501..e632c5e91c 100644
--- a/server/src/test/java/org/apache/seata/server/ParameterParserTest.java
+++ b/server/src/test/java/org/apache/seata/server/ParameterParserTest.java
@@ -20,16 +20,12 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 /**
  * The type parameter parser test
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class ParameterParserTest {
+public class ParameterParserTest extends BaseSpringBootTest {
     private static ParameterParser parameterParser = null;
 
     /**
diff --git 
a/server/src/test/java/org/apache/seata/server/controller/ClusterControllerTest.java
 
b/server/src/test/java/org/apache/seata/server/controller/ClusterControllerTest.java
index f78aad1bc2..18dc5d867d 100644
--- 
a/server/src/test/java/org/apache/seata/server/controller/ClusterControllerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/controller/ClusterControllerTest.java
@@ -23,7 +23,7 @@ import org.apache.http.entity.ContentType;
 import org.apache.http.protocol.HTTP;
 import org.apache.seata.common.holder.ObjectHolder;
 import org.apache.seata.common.util.HttpClientUtil;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.cluster.listener.ClusterChangeEvent;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -31,10 +31,9 @@ import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.Import;
+import org.springframework.core.env.Environment;
 
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
@@ -44,13 +43,17 @@ import java.util.Map;
 import static 
org.apache.seata.common.ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL;
 import static 
org.apache.seata.common.Constants.OBJECT_KEY_SPRING_APPLICATION_CONTEXT;
 
-@SpringBootTest
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
-@Import(DynamicPortTestConfig.class)
-class ClusterControllerTest {
+class ClusterControllerTest extends BaseSpringBootTest {
+
+    private static Environment environment;
+    private static int port;
 
     @BeforeAll
-    public static void setUp(ApplicationContext context) {}
+    public static void setUp(ApplicationContext context) {
+        environment = context.getEnvironment();
+        port = 
Integer.parseInt(environment.getProperty(SERVER_SERVICE_PORT_CAMEL, "18091"));
+    }
 
     @Test
     @Order(1)
@@ -60,7 +63,6 @@ class ClusterControllerTest {
         header.put(HTTP.CONN_KEEP_ALIVE, "close");
         Map<String, String> param = new HashMap<>();
         param.put("default-test", "1");
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response = HttpClientUtil.doPost(
                 "http://127.0.0.1:"; + port + 
"/metadata/v1/watch?timeout=3000", param, header, 5000)) {
             if (response != null) {
@@ -92,7 +94,6 @@ class ClusterControllerTest {
             }
         });
         thread.start();
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response =
                 HttpClientUtil.doPost("http://127.0.0.1:"; + port + 
"/metadata/v1/watch", param, header, 30000)) {
             if (response != null) {
@@ -107,7 +108,6 @@ class ClusterControllerTest {
     @Test
     @Order(3)
     void testXssFilterBlocked_queryParam() throws Exception {
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         String malicious = "<script>alert('xss')</script>";
         Map<String, String> header = new HashMap<>();
         header.put(HTTP.CONTENT_TYPE, 
ContentType.APPLICATION_FORM_URLENCODED.getMimeType());
@@ -131,7 +131,6 @@ class ClusterControllerTest {
         Map<String, String> params = new HashMap<>();
         params.put("testParam", "<script>alert('xss')</script>");
 
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response = HttpClientUtil.doPost(
                 "http://127.0.0.1:"; + port + 
"/metadata/v1/watch?timeout=3000", params, headers, 5000)) {
             Assertions.assertEquals(
@@ -147,7 +146,6 @@ class ClusterControllerTest {
 
         String jsonBody = "{\"testParam\":\"<script>alert('xss')</script>\"}";
 
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response = HttpClientUtil.doPostJson(
                 "http://127.0.0.1:"; + port + 
"/metadata/v1/watch?timeout=3000", jsonBody, headers, 5000)) {
             Assertions.assertEquals(
@@ -165,7 +163,6 @@ class ClusterControllerTest {
         Map<String, String> params = new HashMap<>();
         params.put("safeParam", "123");
 
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response = HttpClientUtil.doPost(
                 "http://127.0.0.1:"; + port + 
"/metadata/v1/watch?timeout=3000", params, headers, 5000)) {
             Assertions.assertEquals(
@@ -182,7 +179,6 @@ class ClusterControllerTest {
 
         String jsonBody = "{\"testParam\":\"<script>alert('xss')</script>\"}";
 
-        int port = 
Integer.parseInt(System.getProperty(SERVER_SERVICE_PORT_CAMEL, "8091"));
         try (CloseableHttpResponse response = HttpClientUtil.doPostJson(
                 "http://127.0.0.1:"; + port + 
"/metadata/v1/watch?timeout=3000&urlParam="
                         + URLEncoder.encode("<script>alert('xss')</script>", 
String.valueOf(StandardCharsets.UTF_8)),
diff --git 
a/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoordinatorTest.java
 
b/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoordinatorTest.java
index 9727028f77..4015235ac4 100644
--- 
a/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoordinatorTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoordinatorTest.java
@@ -36,7 +36,7 @@ import 
org.apache.seata.core.protocol.transaction.BranchRollbackRequest;
 import org.apache.seata.core.protocol.transaction.BranchRollbackResponse;
 import org.apache.seata.core.rpc.RemotingServer;
 import org.apache.seata.core.rpc.processor.RemotingProcessor;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.metrics.MetricsManager;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.session.SessionHolder;
@@ -53,9 +53,7 @@ import org.junit.jupiter.api.condition.JRE;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 import java.util.Collection;
@@ -68,9 +66,7 @@ import java.util.stream.Stream;
  * The type DefaultCoordinator test.
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DefaultCoordinatorTest {
+public class DefaultCoordinatorTest extends BaseSpringBootTest {
     private static DefaultCoordinator defaultCoordinator;
 
     private static final String applicationId = "demo-child-app";
diff --git 
a/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoreTest.java 
b/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoreTest.java
index 763ebac4c8..d88ecf4cbd 100644
--- 
a/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoreTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/coordinator/DefaultCoreTest.java
@@ -22,7 +22,7 @@ import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.rpc.RemotingServer;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.session.SessionHelper;
@@ -35,9 +35,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.util.Collection;
 import java.util.stream.Stream;
@@ -46,9 +44,7 @@ import java.util.stream.Stream;
  * The type Default core test.
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DefaultCoreTest {
+public class DefaultCoreTest extends BaseSpringBootTest {
 
     private static DefaultCore core;
     private static RemotingServer remotingServer;
diff --git 
a/server/src/test/java/org/apache/seata/server/env/PortHelperTest.java 
b/server/src/test/java/org/apache/seata/server/env/PortHelperTest.java
index 717cbcdbf0..c7c31962b3 100644
--- a/server/src/test/java/org/apache/seata/server/env/PortHelperTest.java
+++ b/server/src/test/java/org/apache/seata/server/env/PortHelperTest.java
@@ -32,6 +32,6 @@ class PortHelperTest {
 
     @Test
     public void testGetPortFromConfigFile() throws IOException {
-        Assertions.assertEquals(8091, PortHelper.getPortFromConfigFile());
+        Assertions.assertEquals(8080, PortHelper.getPortFromConfigFile());
     }
 }
diff --git 
a/server/src/test/java/org/apache/seata/server/event/DefaultCoreForEventBusTest.java
 
b/server/src/test/java/org/apache/seata/server/event/DefaultCoreForEventBusTest.java
index eaf46bfde4..0f0bb79430 100644
--- 
a/server/src/test/java/org/apache/seata/server/event/DefaultCoreForEventBusTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/event/DefaultCoreForEventBusTest.java
@@ -24,7 +24,7 @@ import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.rpc.RemotingServer;
 import org.apache.seata.metrics.registry.Registry;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.coordinator.DefaultCoordinator;
 import org.apache.seata.server.coordinator.DefaultCoordinatorTest;
 import org.apache.seata.server.coordinator.DefaultCore;
@@ -36,9 +36,7 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 import java.util.Map;
@@ -52,9 +50,7 @@ import java.util.concurrent.atomic.AtomicInteger;
  * Test events come from Default Core.
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DefaultCoreForEventBusTest {
+public class DefaultCoreForEventBusTest extends BaseSpringBootTest {
 
     private static final boolean DELAY_HANDLE_SESSION = 
StoreConfig.getSessionMode() != SessionMode.FILE;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/DistributedLockerFactoryTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/DistributedLockerFactoryTest.java
index 56e0616c12..0f3719f1d9 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/DistributedLockerFactoryTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/DistributedLockerFactoryTest.java
@@ -18,22 +18,18 @@ package org.apache.seata.server.lock;
 
 import org.apache.seata.core.store.DefaultDistributedLocker;
 import org.apache.seata.core.store.DistributedLocker;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.distributed.DistributedLockerFactory;
 import org.apache.seata.server.storage.redis.lock.RedisDistributedLocker;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 /**
  * @description Distributed locker factory test
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DistributedLockerFactoryTest {
+public class DistributedLockerFactoryTest extends BaseSpringBootTest {
 
     @BeforeEach
     public void setUp() {
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/LockManagerTest.java 
b/server/src/test/java/org/apache/seata/server/lock/LockManagerTest.java
index b2fef44f80..e045d0437e 100644
--- a/server/src/test/java/org/apache/seata/server/lock/LockManagerTest.java
+++ b/server/src/test/java/org/apache/seata/server/lock/LockManagerTest.java
@@ -22,7 +22,7 @@ import org.apache.seata.common.util.CollectionUtils;
 import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.console.entity.param.GlobalLockParam;
 import org.apache.seata.server.console.entity.vo.GlobalLockVO;
 import org.apache.seata.server.console.service.GlobalLockService;
@@ -36,9 +36,7 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import javax.annotation.Resource;
 import java.text.ParseException;
@@ -56,9 +54,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  *
  * @since 2019 /1/23
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class LockManagerTest {
+public class LockManagerTest extends BaseSpringBootTest {
 
     @Resource(type = GlobalLockService.class)
     private GlobalLockService globalLockService;
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockManagerImplTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockManagerImplTest.java
index 19807c8e20..b4d8214c2f 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockManagerImplTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockManagerImplTest.java
@@ -20,7 +20,7 @@ import org.apache.commons.dbcp2.BasicDataSource;
 import org.apache.seata.common.util.IOUtil;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.lock.Locker;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.LockManager;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.storage.db.lock.DataBaseLocker;
@@ -29,9 +29,7 @@ import 
org.apache.seata.server.storage.file.lock.FileLockManager;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -40,9 +38,7 @@ import java.sql.Statement;
 
 /**
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DataBaseLockManagerImplTest {
+public class DataBaseLockManagerImplTest extends BaseSpringBootTest {
 
     static LockManager lockManager = null;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockStoreDAOTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockStoreDAOTest.java
index 874a7c1abe..696030d72b 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockStoreDAOTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/db/DataBaseLockStoreDAOTest.java
@@ -21,16 +21,14 @@ import org.apache.seata.common.ConfigurationKeys;
 import org.apache.seata.common.util.IOUtil;
 import org.apache.seata.config.ConfigurationFactory;
 import org.apache.seata.core.store.LockDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.storage.db.lock.LockStoreDataBaseDAO;
 import org.h2.store.fs.FileUtils;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -41,9 +39,7 @@ import java.util.List;
 
 /**
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class DataBaseLockStoreDAOTest {
+public class DataBaseLockStoreDAOTest extends BaseSpringBootTest {
 
     static LockStoreDataBaseDAO dataBaseLockStoreDAO = null;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/file/FileLockManagerImplTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/file/FileLockManagerImplTest.java
index 55aeedfda9..8566e9b1b7 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/file/FileLockManagerImplTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/file/FileLockManagerImplTest.java
@@ -19,7 +19,7 @@ package org.apache.seata.server.lock.file;
 import org.apache.seata.common.XID;
 import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.LockManager;
 import org.apache.seata.server.session.BranchSession;
 import org.junit.jupiter.api.Assertions;
@@ -27,9 +27,7 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.util.stream.Stream;
 
@@ -40,9 +38,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  *
  * @since 2019 /1/23
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class FileLockManagerImplTest {
+public class FileLockManagerImplTest extends BaseSpringBootTest {
 
     private LockManager lockManager = new FileLockManagerForTest();
 
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/redis/RedisLockManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/redis/RedisLockManagerTest.java
index b6e2ed3980..5877e7cb87 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/redis/RedisLockManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/redis/RedisLockManagerTest.java
@@ -20,7 +20,7 @@ import org.apache.seata.common.exception.StoreException;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.lock.Locker;
 import org.apache.seata.core.model.LockStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.LockManager;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.storage.redis.JedisPooledFactory;
@@ -30,21 +30,15 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 import redis.clients.jedis.JedisPoolConfig;
 
 import java.io.IOException;
 
-/**
- */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
-public class RedisLockManagerTest {
+public class RedisLockManagerTest extends BaseSpringBootTest {
     static LockManager lockManager = null;
 
     static Jedis jedis = null;
diff --git 
a/server/src/test/java/org/apache/seata/server/lock/redis/RedisLuaLockManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/lock/redis/RedisLuaLockManagerTest.java
index f979e992f1..7eb000b6eb 100644
--- 
a/server/src/test/java/org/apache/seata/server/lock/redis/RedisLuaLockManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/lock/redis/RedisLuaLockManagerTest.java
@@ -18,15 +18,12 @@ package org.apache.seata.server.lock.redis;
 
 import org.apache.seata.common.loader.EnhancedServiceLoader;
 import org.apache.seata.core.lock.Locker;
-import org.apache.seata.server.DynamicPortTestConfig;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.storage.redis.lock.RedisLockManager;
 import org.apache.seata.server.storage.redis.lock.RedisLuaLocker;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 
@@ -34,9 +31,7 @@ import java.io.IOException;
  * RedisLocker use lua script
  *
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
 public class RedisLuaLockManagerTest extends RedisLockManagerTest {
 
     /**
diff --git 
a/server/src/test/java/org/apache/seata/server/logging/AppenderTest.java 
b/server/src/test/java/org/apache/seata/server/logging/AppenderTest.java
index 5db183892b..894959e499 100644
--- a/server/src/test/java/org/apache/seata/server/logging/AppenderTest.java
+++ b/server/src/test/java/org/apache/seata/server/logging/AppenderTest.java
@@ -21,21 +21,17 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Appender;
 import com.github.danielwegener.logback.kafka.KafkaAppender;
 import net.logstash.logback.appender.LogstashTcpSocketAppender;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.logging.logback.appender.MetricLogbackAppender;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.slf4j.impl.StaticLoggerBinder;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.lang.reflect.Field;
 import java.util.Iterator;
 
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class AppenderTest {
+public class AppenderTest extends BaseSpringBootTest {
 
     @BeforeAll
     public static void init() {
diff --git 
a/server/src/test/java/org/apache/seata/server/raft/RaftServerTest.java 
b/server/src/test/java/org/apache/seata/server/raft/RaftServerTest.java
index 96f21b5759..eddc15740f 100644
--- a/server/src/test/java/org/apache/seata/server/raft/RaftServerTest.java
+++ b/server/src/test/java/org/apache/seata/server/raft/RaftServerTest.java
@@ -20,7 +20,7 @@ import org.apache.seata.common.ConfigurationKeys;
 import org.apache.seata.common.XID;
 import org.apache.seata.config.ConfigurationCache;
 import org.apache.seata.config.ConfigurationFactory;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.cluster.raft.RaftServerManager;
 import org.apache.seata.server.lock.LockerManagerFactory;
 import org.apache.seata.server.session.SessionHolder;
@@ -29,9 +29,7 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import static 
org.apache.seata.common.ConfigurationKeys.SERVER_RAFT_SSL_CLIENT_KEYSTORE_PATH;
 import static 
org.apache.seata.common.ConfigurationKeys.SERVER_RAFT_SSL_ENABLED;
@@ -39,9 +37,7 @@ import static 
org.apache.seata.common.ConfigurationKeys.SERVER_RAFT_SSL_KMF_ALGO
 import static 
org.apache.seata.common.ConfigurationKeys.SERVER_RAFT_SSL_SERVER_KEYSTORE_PATH;
 import static 
org.apache.seata.common.ConfigurationKeys.SERVER_RAFT_SSL_TMF_ALGORITHM;
 
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RaftServerTest {
+public class RaftServerTest extends BaseSpringBootTest {
 
     @BeforeAll
     public static void setUp(ApplicationContext context) {
diff --git 
a/server/src/test/java/org/apache/seata/server/raft/RaftSyncMessageTest.java 
b/server/src/test/java/org/apache/seata/server/raft/RaftSyncMessageTest.java
index d7ff9a06a4..cdf2704f73 100644
--- a/server/src/test/java/org/apache/seata/server/raft/RaftSyncMessageTest.java
+++ b/server/src/test/java/org/apache/seata/server/raft/RaftSyncMessageTest.java
@@ -22,7 +22,7 @@ import org.apache.seata.common.metadata.Node;
 import org.apache.seata.common.store.SessionMode;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.cluster.raft.snapshot.RaftSnapshot;
 import org.apache.seata.server.cluster.raft.snapshot.RaftSnapshotSerializer;
 import 
org.apache.seata.server.cluster.raft.snapshot.session.RaftSessionSnapshot;
@@ -41,9 +41,7 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -56,9 +54,7 @@ import java.util.Map;
 
 /**
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RaftSyncMessageTest {
+public class RaftSyncMessageTest extends BaseSpringBootTest {
 
     @BeforeAll
     public static void setUp(ApplicationContext context) {
diff --git 
a/server/src/test/java/org/apache/seata/server/raft/execute/BranchSessionExecuteTest.java
 
b/server/src/test/java/org/apache/seata/server/raft/execute/BranchSessionExecuteTest.java
index 25db4c9c1e..3a6ba2653e 100644
--- 
a/server/src/test/java/org/apache/seata/server/raft/execute/BranchSessionExecuteTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/raft/execute/BranchSessionExecuteTest.java
@@ -25,7 +25,7 @@ import org.apache.seata.config.ConfigurationCache;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import 
org.apache.seata.server.cluster.raft.execute.branch.AddBranchSessionExecute;
 import 
org.apache.seata.server.cluster.raft.execute.branch.RemoveBranchSessionExecute;
 import 
org.apache.seata.server.cluster.raft.execute.branch.UpdateBranchSessionExecute;
@@ -40,9 +40,7 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,9 +49,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
 
 /**
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-class BranchSessionExecuteTest {
+class BranchSessionExecuteTest extends BaseSpringBootTest {
 
     private static GlobalSession GLOBAL_SESSION;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/raft/execute/GlobalSessionExecuteTest.java
 
b/server/src/test/java/org/apache/seata/server/raft/execute/GlobalSessionExecuteTest.java
index 372983b89c..2f144b21b0 100644
--- 
a/server/src/test/java/org/apache/seata/server/raft/execute/GlobalSessionExecuteTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/raft/execute/GlobalSessionExecuteTest.java
@@ -22,7 +22,7 @@ import org.apache.seata.common.util.NetUtil;
 import org.apache.seata.config.ConfigurationCache;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import 
org.apache.seata.server.cluster.raft.execute.global.AddGlobalSessionExecute;
 import 
org.apache.seata.server.cluster.raft.execute.global.RemoveGlobalSessionExecute;
 import 
org.apache.seata.server.cluster.raft.execute.global.UpdateGlobalSessionExecute;
@@ -38,15 +38,11 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 /**
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-class GlobalSessionExecuteTest {
+class GlobalSessionExecuteTest extends BaseSpringBootTest {
     @BeforeAll
     public static void setUp(ApplicationContext context) {
         System.setProperty("server.raft.serverAddr", NetUtil.getLocalIp() + 
":9091");
diff --git 
a/server/src/test/java/org/apache/seata/server/raft/execute/LockExecuteTest.java
 
b/server/src/test/java/org/apache/seata/server/raft/execute/LockExecuteTest.java
index 47a81696dc..0c45b9363e 100644
--- 
a/server/src/test/java/org/apache/seata/server/raft/execute/LockExecuteTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/raft/execute/LockExecuteTest.java
@@ -23,7 +23,7 @@ import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.config.ConfigurationCache;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import 
org.apache.seata.server.cluster.raft.execute.branch.RemoveBranchSessionExecute;
 import 
org.apache.seata.server.cluster.raft.execute.lock.BranchReleaseLockExecute;
 import 
org.apache.seata.server.cluster.raft.execute.lock.GlobalReleaseLockExecute;
@@ -43,20 +43,14 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import static org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
 
-/**
- */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-class LockExecuteTest {
+class LockExecuteTest extends BaseSpringBootTest {
 
     private static GlobalSession GLOBAL_SESSION;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/ratelimiter/RateLimiterHandlerTest.java
 
b/server/src/test/java/org/apache/seata/server/ratelimiter/RateLimiterHandlerTest.java
index a5e7a02366..03d273b220 100644
--- 
a/server/src/test/java/org/apache/seata/server/ratelimiter/RateLimiterHandlerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/ratelimiter/RateLimiterHandlerTest.java
@@ -18,7 +18,7 @@ package org.apache.seata.server.ratelimiter;
 
 import org.apache.seata.core.protocol.transaction.GlobalBeginRequest;
 import org.apache.seata.core.rpc.RpcContext;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.limit.ratelimit.RateLimiter;
 import org.apache.seata.server.limit.ratelimit.RateLimiterHandler;
 import org.apache.seata.server.limit.ratelimit.RateLimiterHandlerConfig;
@@ -27,15 +27,11 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 /**
  * RateLimiterHandlerTest
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RateLimiterHandlerTest {
+public class RateLimiterHandlerTest extends BaseSpringBootTest {
 
     /**
      * Logger for TokenBucketLimiterTest
diff --git 
a/server/src/test/java/org/apache/seata/server/ratelimiter/TokenBucketLimiterTest.java
 
b/server/src/test/java/org/apache/seata/server/ratelimiter/TokenBucketLimiterTest.java
index c5485f0f01..9e16b236b7 100644
--- 
a/server/src/test/java/org/apache/seata/server/ratelimiter/TokenBucketLimiterTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/ratelimiter/TokenBucketLimiterTest.java
@@ -17,15 +17,13 @@
 package org.apache.seata.server.ratelimiter;
 
 import org.apache.seata.common.thread.NamedThreadFactory;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.limit.ratelimit.RateLimiter;
 import org.apache.seata.server.limit.ratelimit.TokenBucketLimiter;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 import org.springframework.util.StopWatch;
 
 import java.util.concurrent.CountDownLatch;
@@ -37,9 +35,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 /**
  * TokenBucketLimiterTest
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class TokenBucketLimiterTest {
+public class TokenBucketLimiterTest extends BaseSpringBootTest {
 
     /**
      * Logger for TokenBucketLimiterTest
diff --git 
a/server/src/test/java/org/apache/seata/server/session/BranchSessionTest.java 
b/server/src/test/java/org/apache/seata/server/session/BranchSessionTest.java
index c40236e4e0..b689e83b3c 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/BranchSessionTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/BranchSessionTest.java
@@ -19,15 +19,13 @@ package org.apache.seata.server.session;
 import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Stream;
@@ -39,9 +37,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  *
  * @since 2019 /1/23
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class BranchSessionTest {
+public class BranchSessionTest extends BaseSpringBootTest {
 
     @BeforeAll
     public static void setUp(ApplicationContext context) {}
diff --git 
a/server/src/test/java/org/apache/seata/server/session/FileSessionManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/FileSessionManagerTest.java
index 2b6714b89d..b55dabe615 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/FileSessionManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/FileSessionManagerTest.java
@@ -27,7 +27,7 @@ import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.LockStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.console.entity.param.GlobalSessionParam;
 import org.apache.seata.server.console.entity.vo.GlobalSessionVO;
 import org.apache.seata.server.console.service.BranchSessionService;
@@ -41,9 +41,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import javax.annotation.Resource;
 import java.io.IOException;
@@ -62,9 +60,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  *
  * @since 2019 /1/22
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class FileSessionManagerTest {
+public class FileSessionManagerTest extends BaseSpringBootTest {
 
     private static volatile List<SessionManager> sessionManagerList;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/session/GlobalSessionTest.java 
b/server/src/test/java/org/apache/seata/server/session/GlobalSessionTest.java
index ffddf3010e..342dc19650 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/GlobalSessionTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/GlobalSessionTest.java
@@ -21,16 +21,14 @@ import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 import java.util.stream.Stream;
@@ -42,9 +40,7 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  *
  * @since 2019 /1/23
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class GlobalSessionTest {
+public class GlobalSessionTest extends BaseSpringBootTest {
 
     @BeforeAll
     public static void init(ApplicationContext context) {
diff --git 
a/server/src/test/java/org/apache/seata/server/session/SessionHolderTest.java 
b/server/src/test/java/org/apache/seata/server/session/SessionHolderTest.java
index 29e36c966d..692a37fc95 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/SessionHolderTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/SessionHolderTest.java
@@ -19,7 +19,7 @@ package org.apache.seata.server.session;
 import org.apache.seata.common.XID;
 import org.apache.seata.common.store.SessionMode;
 import org.apache.seata.core.constants.ConfigurationKeys;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -27,8 +27,6 @@ import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.io.File;
 import java.io.IOException;
@@ -47,9 +45,7 @@ import static 
org.apache.seata.server.session.SessionHolder.ROOT_SESSION_MANAGER
  *
  */
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class SessionHolderTest {
+public class SessionHolderTest extends BaseSpringBootTest {
     private String pathname;
 
     @BeforeEach
diff --git 
a/server/src/test/java/org/apache/seata/server/session/SessionStatusValidatorTest.java
 
b/server/src/test/java/org/apache/seata/server/session/SessionStatusValidatorTest.java
index 0722a0c95e..1957e9d39d 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/SessionStatusValidatorTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/SessionStatusValidatorTest.java
@@ -17,19 +17,15 @@
 package org.apache.seata.server.session;
 
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 /**
  * the type change status validator test
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class SessionStatusValidatorTest {
+public class SessionStatusValidatorTest extends BaseSpringBootTest {
 
     @Test
     public void testValidateUpdateStatus() {
diff --git 
a/server/src/test/java/org/apache/seata/server/session/db/DataBaseSessionManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/db/DataBaseSessionManagerTest.java
index 714f3c51aa..d8efc22f81 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/db/DataBaseSessionManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/db/DataBaseSessionManagerTest.java
@@ -24,7 +24,7 @@ import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.session.SessionCondition;
@@ -37,9 +37,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -54,11 +52,9 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
  * The type Data base session manager test.
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
 // Unit test triggered a bug in Druid, see the issue 
https://github.com/alibaba/druid/issues/4936
 @DisabledIfSystemProperty(named = "druid.version", matches = "1.2.12")
-public class DataBaseSessionManagerTest {
+public class DataBaseSessionManagerTest extends BaseSpringBootTest {
 
     static SessionManager sessionManager = null;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisDistributedLockerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisDistributedLockerTest.java
index 9fb205cd70..4e83e81b73 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisDistributedLockerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisDistributedLockerTest.java
@@ -22,7 +22,7 @@ import org.apache.seata.common.store.SessionMode;
 import org.apache.seata.common.store.StoreMode;
 import org.apache.seata.core.store.DistributedLockDO;
 import org.apache.seata.core.store.DistributedLocker;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.distributed.DistributedLockerFactory;
 import org.apache.seata.server.session.SessionHolder;
 import org.apache.seata.server.storage.redis.JedisPooledFactory;
@@ -31,9 +31,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 import redis.clients.jedis.Jedis;
 
 import java.io.IOException;
@@ -42,10 +40,8 @@ import java.io.IOException;
  * @description redis distributed lock test
  *
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
-public class RedisDistributedLockerTest {
+public class RedisDistributedLockerTest extends BaseSpringBootTest {
 
     private String retryRollbacking = "RetryRollbacking";
     private String retryRollbacking2 = "RetryRollbacking2";
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java
index d24bc190ee..7587b26b53 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java
@@ -17,14 +17,11 @@
 package org.apache.seata.server.session.redis;
 
 import org.apache.seata.common.loader.EnhancedServiceLoader;
-import org.apache.seata.server.DynamicPortTestConfig;
 import org.apache.seata.server.storage.redis.session.RedisSessionManager;
 import 
org.apache.seata.server.storage.redis.store.RedisLuaTransactionStoreManager;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 
@@ -32,9 +29,7 @@ import java.io.IOException;
  * test RedisLuaTransactionStoreManager
  *
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
 public class RedisLuaTransactionStoreManagerTest extends 
RedisTransactionStoreManagerTest {
 
     /**
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisQueryConsolTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisQueryConsolTest.java
index 94b6603dad..b21babacd0 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisQueryConsolTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisQueryConsolTest.java
@@ -18,7 +18,7 @@ package org.apache.seata.server.session.redis;
 
 import com.alibaba.fastjson.JSON;
 import org.apache.seata.common.result.PageResult;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.console.entity.param.GlobalLockParam;
 import org.apache.seata.server.console.entity.param.GlobalSessionParam;
 import org.apache.seata.server.console.entity.vo.GlobalLockVO;
@@ -27,17 +27,13 @@ import 
org.apache.seata.server.console.service.GlobalLockService;
 import org.apache.seata.server.console.service.GlobalSessionService;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import javax.annotation.Resource;
 
 /**
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
-public class RedisQueryConsolTest {
+public class RedisQueryConsolTest extends BaseSpringBootTest {
 
     /**
      *
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisSessionManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisSessionManagerTest.java
index d8f9b43451..4131065e61 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisSessionManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisSessionManagerTest.java
@@ -24,7 +24,7 @@ import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.session.SessionCondition;
@@ -37,9 +37,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.IOException;
 import java.lang.reflect.Field;
@@ -49,10 +47,8 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
 
 /**
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
-public class RedisSessionManagerTest {
+public class RedisSessionManagerTest extends BaseSpringBootTest {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(RedisSessionManagerTest.class);
     private static SessionManager sessionManager = null;
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisTransactionStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisTransactionStoreManagerTest.java
index ad19417ea8..3509a173ed 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/RedisTransactionStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/RedisTransactionStoreManagerTest.java
@@ -23,7 +23,7 @@ import org.apache.seata.common.util.BeanUtils;
 import org.apache.seata.common.util.CollectionUtils;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.console.entity.param.GlobalSessionParam;
 import org.apache.seata.server.console.entity.vo.GlobalLockVO;
 import org.apache.seata.server.console.entity.vo.GlobalSessionVO;
@@ -40,9 +40,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 import redis.clients.jedis.Jedis;
 
 import java.io.IOException;
@@ -55,10 +53,8 @@ import static 
org.apache.seata.server.storage.SessionConverter.convertToGlobalSe
 
 /**
  */
-@SpringBootTest
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@Import(DynamicPortTestConfig.class)
-public class RedisTransactionStoreManagerTest {
+public class RedisTransactionStoreManagerTest extends BaseSpringBootTest {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(RedisTransactionStoreManagerTest.class);
 
diff --git 
a/server/src/test/java/org/apache/seata/server/session/redis/SessionConverterTest.java
 
b/server/src/test/java/org/apache/seata/server/session/redis/SessionConverterTest.java
index 86b90e8908..beaaa7355e 100644
--- 
a/server/src/test/java/org/apache/seata/server/session/redis/SessionConverterTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/session/redis/SessionConverterTest.java
@@ -21,14 +21,12 @@ import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.store.BranchTransactionDO;
 import org.apache.seata.core.store.GlobalTransactionDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.storage.SessionConverter;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.util.Date;
 
@@ -36,9 +34,7 @@ import java.util.Date;
  * The session converter utils
  *
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class SessionConverterTest {
+public class SessionConverterTest extends BaseSpringBootTest {
 
     @Test
     public void testConvertGlobalSessionNotNull() {
diff --git 
a/server/src/test/java/org/apache/seata/server/spring/listener/ClearServerServicePortInitializer.java
 
b/server/src/test/java/org/apache/seata/server/spring/listener/ClearServerServicePortInitializer.java
new file mode 100644
index 0000000000..6c90dee227
--- /dev/null
+++ 
b/server/src/test/java/org/apache/seata/server/spring/listener/ClearServerServicePortInitializer.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *     http://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.apache.seata.server.spring.listener;
+
+import org.apache.seata.config.ConfigurationCache;
+import org.apache.seata.core.constants.ConfigurationKeys;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import 
org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
+import org.springframework.boot.context.logging.LoggingApplicationListener;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.event.ContextClosedEvent;
+import org.springframework.context.event.GenericApplicationListener;
+import org.springframework.core.Ordered;
+import org.springframework.core.ResolvableType;
+
+/**
+ * Application listener to clear the SERVER_SERVICE_PORT_CAMEL system property
+ * during Spring context environment preparation, refresh, and close events.
+ * It runs with higher priority than ServerApplicationListener.
+ */
+public class ClearServerServicePortInitializer implements 
GenericApplicationListener, Ordered {
+
+    private final Logger log = LoggerFactory.getLogger(this.getClass());
+
+    @Override
+    public boolean supportsEventType(ResolvableType eventType) {
+        Class<?> rawClass = eventType.getRawClass();
+        if (rawClass == null) {
+            return false;
+        }
+        // Listen to environment preparation, context refresh, and context 
close events
+        return 
ApplicationEnvironmentPreparedEvent.class.isAssignableFrom(rawClass)
+                || ContextClosedEvent.class.isAssignableFrom(rawClass);
+    }
+
+    @Override
+    public void onApplicationEvent(ApplicationEvent event) {
+        ConfigurationCache.clear();
+        // Clear the property for any of the supported events
+        System.clearProperty(ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+        log.info("Cleared system property: " + 
ConfigurationKeys.SERVER_SERVICE_PORT_CAMEL);
+    }
+
+    @Override
+    public int getOrder() {
+        // ServerApplicationListener order is 
LoggingApplicationListener.DEFAULT_ORDER - 1.
+        // This listener needs to run before ServerApplicationListener for 
ApplicationEnvironmentPreparedEvent.
+        return LoggingApplicationListener.DEFAULT_ORDER - 2;
+    }
+}
diff --git 
a/server/src/test/java/org/apache/seata/server/storage/file/store/FileVGroupMappingStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/storage/file/store/FileVGroupMappingStoreManagerTest.java
index 174a2b33f6..8eff02a539 100644
--- 
a/server/src/test/java/org/apache/seata/server/storage/file/store/FileVGroupMappingStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/storage/file/store/FileVGroupMappingStoreManagerTest.java
@@ -18,13 +18,11 @@ package org.apache.seata.server.storage.file.store;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.seata.core.store.MappingDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.junit.jupiter.MockitoExtension;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.io.File;
 import java.io.IOException;
@@ -36,9 +34,7 @@ import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 @ExtendWith(MockitoExtension.class)
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class FileVGroupMappingStoreManagerTest {
+public class FileVGroupMappingStoreManagerTest extends BaseSpringBootTest {
 
     private FileVGroupMappingStoreManager fileVGroupMappingStoreManager;
     private static final String STORE_PATH = 
"sessionStore/vgroup_mapping.json";
diff --git 
a/server/src/test/java/org/apache/seata/server/storage/raft/store/RaftVGroupMappingStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/storage/raft/store/RaftVGroupMappingStoreManagerTest.java
index b29cd78912..3405bf090f 100644
--- 
a/server/src/test/java/org/apache/seata/server/storage/raft/store/RaftVGroupMappingStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/storage/raft/store/RaftVGroupMappingStoreManagerTest.java
@@ -17,11 +17,9 @@
 package org.apache.seata.server.storage.raft.store;
 
 import org.apache.seata.core.store.MappingDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -29,9 +27,7 @@ import java.util.Map;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RaftVGroupMappingStoreManagerTest {
+public class RaftVGroupMappingStoreManagerTest extends BaseSpringBootTest {
 
     private RaftVGroupMappingStoreManager raftVGroupMappingStoreManager;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/storage/redis/store/RedisVGroupMappingStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/storage/redis/store/RedisVGroupMappingStoreManagerTest.java
index 500efa3c18..d5ef182822 100644
--- 
a/server/src/test/java/org/apache/seata/server/storage/redis/store/RedisVGroupMappingStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/storage/redis/store/RedisVGroupMappingStoreManagerTest.java
@@ -18,20 +18,16 @@ package org.apache.seata.server.storage.redis.store;
 
 import org.apache.seata.common.metadata.Instance;
 import org.apache.seata.core.store.MappingDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.util.Map;
 
 @EnabledIfSystemProperty(named = "redisCaseEnabled", matches = "true")
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RedisVGroupMappingStoreManagerTest {
+public class RedisVGroupMappingStoreManagerTest extends BaseSpringBootTest {
     private RedisVGroupMappingStoreManager redisVGroupMappingStoreManager;
 
     @BeforeEach
diff --git 
a/server/src/test/java/org/apache/seata/server/store/RaftSyncMessageSerializerTest.java
 
b/server/src/test/java/org/apache/seata/server/store/RaftSyncMessageSerializerTest.java
index 1149a470f6..410b2c1ecf 100644
--- 
a/server/src/test/java/org/apache/seata/server/store/RaftSyncMessageSerializerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/store/RaftSyncMessageSerializerTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.seata.server.store;
 
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.cluster.raft.sync.RaftSyncMessageSerializer;
 import org.apache.seata.server.cluster.raft.sync.msg.RaftGlobalSessionSyncMsg;
 import org.apache.seata.server.cluster.raft.sync.msg.RaftSyncMessage;
@@ -27,15 +27,9 @@ import org.apache.seata.server.storage.SessionConverter;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
-/**
- */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class RaftSyncMessageSerializerTest {
+public class RaftSyncMessageSerializerTest extends BaseSpringBootTest {
     @BeforeAll
     public static void setUp(ApplicationContext context) {}
 
diff --git 
a/server/src/test/java/org/apache/seata/server/store/SessionStoreTest.java 
b/server/src/test/java/org/apache/seata/server/store/SessionStoreTest.java
index 51d2e4a44e..b9633743db 100644
--- a/server/src/test/java/org/apache/seata/server/store/SessionStoreTest.java
+++ b/server/src/test/java/org/apache/seata/server/store/SessionStoreTest.java
@@ -24,7 +24,7 @@ import org.apache.seata.core.constants.ConfigurationKeys;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.lock.LockManager;
 import org.apache.seata.server.lock.file.FileLockManagerForTest;
 import org.apache.seata.server.session.BranchSession;
@@ -35,10 +35,11 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.io.File;
 
@@ -49,19 +50,20 @@ import static 
org.apache.seata.common.DefaultValues.DEFAULT_TX_GROUP;
 /**
  * The type Session store test.
  */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class SessionStoreTest {
-
-    @BeforeAll
-    public static void setUp(ApplicationContext context) {}
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class SessionStoreTest extends BaseSpringBootTest {
 
     /**
      * The constant RESOURCE_ID.
      */
     public static final String RESOURCE_ID = "mysql:xxx";
 
-    private static Configuration CONFIG = ConfigurationFactory.getInstance();
+    private static Configuration CONFIG;
+
+    @BeforeAll
+    public static void setUp(ApplicationContext context) {
+        CONFIG = ConfigurationFactory.getInstance();
+    }
 
     /**
      * Clean.
@@ -97,6 +99,7 @@ public class SessionStoreTest {
      * @throws Exception the exception
      */
     @Test
+    @Order(1)
     public void testRestoredFromFile() throws Exception {
         try {
             SessionHolder.init(SessionMode.FILE);
@@ -176,6 +179,7 @@ public class SessionStoreTest {
      * @throws Exception the exception
      */
     @Test
+    @Order(2)
     public void testRestoredFromFileAsyncCommitting() throws Exception {
         try {
             SessionHolder.init(SessionMode.FILE);
@@ -229,6 +233,7 @@ public class SessionStoreTest {
      * @throws Exception the exception
      */
     @Test
+    @Order(3)
     public void testRestoredFromFileCommitRetry() throws Exception {
         try {
             SessionHolder.init(SessionMode.FILE);
@@ -287,6 +292,7 @@ public class SessionStoreTest {
      * @throws Exception the exception
      */
     @Test
+    @Order(4)
     public void testRestoredFromFileRollbackRetry() throws Exception {
         try {
             SessionHolder.init(SessionMode.FILE);
@@ -346,6 +352,7 @@ public class SessionStoreTest {
      * @throws Exception the exception
      */
     @Test
+    @Order(5)
     public void testRestoredFromFileRollbackFailed() throws Exception {
         try {
             SessionHolder.init(SessionMode.FILE);
diff --git 
a/server/src/test/java/org/apache/seata/server/store/db/AbstractDataSourceProviderTest.java
 
b/server/src/test/java/org/apache/seata/server/store/db/AbstractDataSourceProviderTest.java
index 7d992cba3d..0906d69f36 100644
--- 
a/server/src/test/java/org/apache/seata/server/store/db/AbstractDataSourceProviderTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/store/db/AbstractDataSourceProviderTest.java
@@ -20,7 +20,7 @@ import org.apache.seata.common.loader.EnhancedServiceLoader;
 import org.apache.seata.common.loader.EnhancedServiceNotFoundException;
 import org.apache.seata.config.ConfigurationFactory;
 import org.apache.seata.core.store.db.DataSourceProvider;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -28,9 +28,7 @@ import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
@@ -38,10 +36,8 @@ import java.sql.SQLException;
 
 /**
  */
-@SpringBootTest
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
-@Import(DynamicPortTestConfig.class)
-public class AbstractDataSourceProviderTest {
+public class AbstractDataSourceProviderTest extends BaseSpringBootTest {
 
     private final String dbcpDatasourceType = "dbcp";
 
@@ -60,7 +56,7 @@ public class AbstractDataSourceProviderTest {
     }
 
     @AfterEach
-    void tearDown() {
+    public void tearDown() {
         EnhancedServiceLoader.unloadAll();
         ConfigurationFactory.reload();
         System.clearProperty("store.db.driverClassName");
diff --git 
a/server/src/test/java/org/apache/seata/server/store/db/LogStoreDataBaseDAOTest.java
 
b/server/src/test/java/org/apache/seata/server/store/db/LogStoreDataBaseDAOTest.java
index f4808dbb6e..5b22d6f65d 100644
--- 
a/server/src/test/java/org/apache/seata/server/store/db/LogStoreDataBaseDAOTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/store/db/LogStoreDataBaseDAOTest.java
@@ -21,16 +21,14 @@ import org.apache.seata.common.util.CollectionUtils;
 import org.apache.seata.common.util.IOUtil;
 import org.apache.seata.core.store.BranchTransactionDO;
 import org.apache.seata.core.store.GlobalTransactionDO;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.storage.db.store.LogStoreDataBaseDAO;
 import org.h2.store.fs.FileUtils;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Import;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -38,11 +36,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.List;
 
-/**
- */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class LogStoreDataBaseDAOTest {
+public class LogStoreDataBaseDAOTest extends BaseSpringBootTest {
 
     static LogStoreDataBaseDAO logStoreDataBaseDAO = null;
 
diff --git 
a/server/src/test/java/org/apache/seata/server/store/file/FileTransactionStoreManagerTest.java
 
b/server/src/test/java/org/apache/seata/server/store/file/FileTransactionStoreManagerTest.java
index 87e7fa90f0..188eb38385 100644
--- 
a/server/src/test/java/org/apache/seata/server/store/file/FileTransactionStoreManagerTest.java
+++ 
b/server/src/test/java/org/apache/seata/server/store/file/FileTransactionStoreManagerTest.java
@@ -19,7 +19,7 @@ package org.apache.seata.server.store.file;
 import org.apache.seata.common.store.SessionMode;
 import org.apache.seata.common.util.BufferUtils;
 import org.apache.seata.common.util.UUIDGenerator;
-import org.apache.seata.server.DynamicPortTestConfig;
+import org.apache.seata.server.BaseSpringBootTest;
 import org.apache.seata.server.session.BranchSession;
 import org.apache.seata.server.session.GlobalSession;
 import org.apache.seata.server.session.SessionHolder;
@@ -35,8 +35,6 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
 
 import java.io.File;
 import java.lang.reflect.Method;
@@ -45,11 +43,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-/**
- */
-@SpringBootTest
-@Import(DynamicPortTestConfig.class)
-public class FileTransactionStoreManagerTest {
+public class FileTransactionStoreManagerTest extends BaseSpringBootTest {
 
     @BeforeEach
     public void setUp() {
diff --git a/server/src/test/resources/test-cluster-controller.properties 
b/server/src/test/resources/META-INF/spring.factories
similarity index 86%
rename from server/src/test/resources/test-cluster-controller.properties
rename to server/src/test/resources/META-INF/spring.factories
index 49c04b3204..2d9fec086a 100644
--- a/server/src/test/resources/test-cluster-controller.properties
+++ b/server/src/test/resources/META-INF/spring.factories
@@ -14,7 +14,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
-server.port=18091
-seata.server.service-port=18091
\ No newline at end of file
+org.springframework.context.ApplicationListener=\
+org.apache.seata.server.spring.listener.ClearServerServicePortInitializer
diff --git a/server/src/test/resources/application.properties 
b/server/src/test/resources/application.properties
index cbc2472198..dc879b0458 100644
--- a/server/src/test/resources/application.properties
+++ b/server/src/test/resources/application.properties
@@ -16,12 +16,10 @@
 #
 
 
-server.port=8091
 seata.metrics.enabled=true
 seata.metrics.exporter-list=prometheus
 seata.metrics.exporter-prometheus-port=9898
 seata.metrics.registry-type=compact
-seata.server.service-port=8091
 seata.registry.namingserver.server-addr=127.0.0.1:8081
 seata.registry.namingserver.namespace=public
 seata.registry.namingserver.heartbeat-period=5000
diff --git 
a/spring/src/test/java/org/apache/seata/spring/annotation/AdapterSpringSeataInterceptorTest.java
 
b/spring/src/test/java/org/apache/seata/spring/annotation/AdapterSpringSeataInterceptorTest.java
index 3b1e8f4213..67a24a1a06 100644
--- 
a/spring/src/test/java/org/apache/seata/spring/annotation/AdapterSpringSeataInterceptorTest.java
+++ 
b/spring/src/test/java/org/apache/seata/spring/annotation/AdapterSpringSeataInterceptorTest.java
@@ -17,6 +17,7 @@
 package org.apache.seata.spring.annotation;
 
 import org.aopalliance.intercept.MethodInvocation;
+import org.apache.seata.core.rpc.netty.RmNettyRemotingClient;
 import 
org.apache.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler;
 import 
org.apache.seata.integration.tx.api.interceptor.parser.DefaultInterfaceParser;
 import org.apache.seata.rm.tcc.api.BusinessActionContext;
@@ -43,6 +44,7 @@ class AdapterSpringSeataInterceptorTest {
 
     @BeforeAll
     static void init() throws Throwable {
+        RmNettyRemotingClient.getInstance().destroy();
         // given
         normalTccAction = new NormalTccActionImpl();
         ProxyInvocationHandler proxyInvocationHandler =
diff --git 
a/spring/src/test/java/org/apache/seata/spring/annotation/GlobalTransactionScannerTest.java
 
b/spring/src/test/java/org/apache/seata/spring/annotation/GlobalTransactionScannerTest.java
index 383602d810..5da4a2c5e5 100644
--- 
a/spring/src/test/java/org/apache/seata/spring/annotation/GlobalTransactionScannerTest.java
+++ 
b/spring/src/test/java/org/apache/seata/spring/annotation/GlobalTransactionScannerTest.java
@@ -19,7 +19,9 @@ package org.apache.seata.spring.annotation;
 import org.aopalliance.aop.Advice;
 import org.apache.seata.config.ConfigurationChangeEvent;
 import org.apache.seata.core.constants.ConfigurationKeys;
+import org.apache.seata.core.rpc.netty.RmNettyRemotingClient;
 import org.apache.seata.tm.api.FailureHandler;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -84,6 +86,11 @@ class GlobalTransactionScannerTest {
         }
     }
 
+    @AfterAll
+    static void afterAll() {
+        RmNettyRemotingClient.getInstance().destroy();
+    }
+
     @Test
     void testConstructorWithTxServiceGroup() {
         // Test single parameter constructor


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to