fixed non-idempotent unit tests (#14172)

diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java
index afaa592..02a1e9f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java
@@ -57,7 +57,8 @@
         ClassGenerator cg = ClassGenerator.newInstance();
 
         // add className, interface, superClass
-        String className = BaseClass.class.getPackage().getName() + ".TestClass";
+        String className = BaseClass.class.getPackage().getName() + ".TestClass"
+                + UUID.randomUUID().toString().replace("-", "");
         cg.setClassName(className);
         cg.addInterface(BaseInterface.class);
         cg.setSuperClass(BaseClass.class);
@@ -212,7 +213,7 @@
         fname.setAccessible(true);
 
         ClassGenerator cg = ClassGenerator.newInstance();
-        cg.setClassName(Bean.class.getName() + "$Builder2");
+        cg.setClassName(Bean.class.getName() + "$Builder2" + UUID.randomUUID().toString());
         cg.addInterface(Builder.class);
 
         cg.addField("FNAME", Modifier.PUBLIC | Modifier.STATIC, java.lang.reflect.Field.class);
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
index 0cc3aa8..78098f8 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
@@ -172,7 +172,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
index 1039582..21ffd61 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
@@ -239,7 +239,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
index 3d7315a..f0bd1ba 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
@@ -185,7 +185,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
index 1f89b88..1816277 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
@@ -201,7 +201,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // TODO: we need to check whether this scenario is normal
         // TODO: the Exporter and ServiceDiscoveryRegistry are same in multiple registry center
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
index 996e98d..b6e67f4 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
@@ -169,7 +169,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
index d866f40..b411670 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
@@ -240,7 +240,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
index 95090fd..fd68e33 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
@@ -185,7 +185,6 @@
     @AfterEach
     public void tearDown() throws IOException {
         DubboBootstrap.reset();
-        PROVIDER_APPLICATION_NAME = null;
         serviceConfig = null;
         // The exported service has been unexported
         Assertions.assertTrue(serviceListener.getExportedServices().isEmpty());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
index c231d89..c324c53 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
@@ -35,6 +35,7 @@
     public void setUp() throws Exception {
         DubboBootstrap.reset();
         MockReferenceConfig.setCounter(0);
+        XxxMockReferenceConfig.setCounter(0);
         SimpleReferenceCache.CACHE_HOLDER.clear();
     }
 
diff --git a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
index 5304963..e8198a3 100644
--- a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
+++ b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
@@ -51,6 +51,7 @@
     private MetricsConfig metricsConfig;
     private ApplicationModel applicationModel;
     private FrameworkModel frameworkModel;
+    HttpServer prometheusExporterHttpServer;
 
     @BeforeEach
     public void setup() {
@@ -64,6 +65,9 @@
     @AfterEach
     public void teardown() {
         applicationModel.destroy();
+        if (prometheusExporterHttpServer != null) {
+            prometheusExporterHttpServer.stop(0);
+        }
     }
 
     @Test
@@ -146,7 +150,7 @@
     private void exportHttpServer(PrometheusMetricsReporter reporter, int port) {
 
         try {
-            HttpServer prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0);
+            prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0);
             prometheusExporterHttpServer.createContext("/metrics", httpExchange -> {
                 reporter.resetIfSamplesChanged();
                 String response = reporter.getPrometheusRegistry().scrape();
diff --git a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
index 5591cd8..83b062e 100644
--- a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
+++ b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
@@ -62,6 +62,8 @@
 
     DefaultMetricsCollector metricsCollector;
 
+    HttpServer prometheusExporterHttpServer;
+
     @BeforeEach
     public void setup() {
         applicationModel = ApplicationModel.defaultModel();
@@ -77,6 +79,9 @@
     @AfterEach
     public void teardown() {
         applicationModel.destroy();
+        if (prometheusExporterHttpServer != null) {
+            prometheusExporterHttpServer.stop(0);
+        }
     }
 
     @Test
@@ -121,7 +126,7 @@
 
     private void exportHttpServer(PrometheusMetricsReporter reporter, int port) {
         try {
-            HttpServer prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0);
+            prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0);
             prometheusExporterHttpServer.createContext("/metrics", httpExchange -> {
                 reporter.resetIfSamplesChanged();
                 String response = reporter.getPrometheusRegistry().scrape();
diff --git a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java
index 891a45e..c6f7c26 100644
--- a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java
+++ b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java
@@ -30,6 +30,8 @@
 import org.apache.dubbo.rpc.Result;
 import org.apache.dubbo.rpc.RpcException;
 
+import java.io.IOException;
+import java.net.ServerSocket;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
@@ -139,7 +141,13 @@
     }
 
     @Test
-    void testMonitorFactory() {
+    void testMonitorFactory() throws IOException {
+        int port;
+        try (ServerSocket socket = new ServerSocket(0)) {
+            port = socket.getLocalPort();
+            socket.close();
+        }
+
         MockMonitorService monitorService = new MockMonitorService();
         URL statistics = new URLBuilder(DUBBO_PROTOCOL, "10.20.153.10", 0)
                 .addParameter(APPLICATION_KEY, "morgan")
@@ -163,12 +171,12 @@
         Exporter<MonitorService> exporter = protocol.export(proxyFactory.getInvoker(
                 monitorService,
                 MonitorService.class,
-                URL.valueOf("dubbo://127.0.0.1:17979/" + MonitorService.class.getName())));
+                URL.valueOf("dubbo://127.0.0.1:" + port + "/" + MonitorService.class.getName())));
         try {
             Monitor monitor = null;
             long start = System.currentTimeMillis();
             while (System.currentTimeMillis() - start < 60000) {
-                monitor = monitorFactory.getMonitor(URL.valueOf("dubbo://127.0.0.1:17979?interval=10"));
+                monitor = monitorFactory.getMonitor(URL.valueOf("dubbo://127.0.0.1:" + port + "?interval=10"));
                 if (monitor == null) {
                     continue;
                 }
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
index 60da316..70a9098 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
@@ -35,6 +35,7 @@
     @AfterEach
     public void reset() {
         frameworkModel.destroy();
+        MockLivenessProbe.setCheckReturnValue(false);
     }
 
     @Test
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java
index 2e7fdf2..df6b355 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java
@@ -24,12 +24,18 @@
 import java.util.Collections;
 import java.util.HashSet;
 
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
 class ChannelHandlerDispatcherTest {
 
+    @AfterEach
+    public void tearDown() {
+        MockChannelHandler.reset();
+    }
+
     @Test
     void test() {
         ChannelHandlerDispatcher channelHandlerDispatcher = new ChannelHandlerDispatcher();
@@ -138,4 +144,12 @@
     public static int getCaughtCount() {
         return caughtCount;
     }
+
+    public static void reset() {
+        sentCount = 0;
+        connectedCount = 0;
+        disconnectedCount = 0;
+        receivedCount = 0;
+        caughtCount = 0;
+    }
 }
diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java
index efa938e..de0eaab 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java
@@ -39,6 +39,10 @@
         URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91031, DemoService.class.getName());
         String methodName = "testBeginCountEndCount";
         int max = 2;
+
+        RpcStatus.removeStatus(url);
+        RpcStatus.removeStatus(url, methodName);
+
         boolean flag = RpcStatus.beginCount(url, methodName, max);
         RpcStatus urlRpcStatus = RpcStatus.getStatus(url);
         RpcStatus methodRpcStatus = RpcStatus.getStatus(url, methodName);
@@ -65,6 +69,10 @@
     void testBeginCountEndCountInMultiThread() throws Exception {
         URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91032, DemoService.class.getName());
         String methodName = "testBeginCountEndCountInMultiThread";
+
+        RpcStatus.removeStatus(url);
+        RpcStatus.removeStatus(url, methodName);
+
         int max = 50;
         int threadNum = 10;
         AtomicInteger successCount = new AtomicInteger();
@@ -99,6 +107,10 @@
         URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91033, DemoService.class.getName());
         String methodName = "testStatistics";
         int max = 0;
+
+        RpcStatus.removeStatus(url);
+        RpcStatus.removeStatus(url, methodName);
+
         RpcStatus.beginCount(url, methodName, max);
         RpcStatus.beginCount(url, methodName, max);
         RpcStatus.beginCount(url, methodName, max);