diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java
index 7e98fbd..fad079a 100644
--- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java
+++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java
@@ -19,9 +19,9 @@
 
 import java.util.Map;
 
-import org.junit.Before;
-import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class TestHealthCheckerManager {
 
@@ -49,7 +49,7 @@
     }
   };
 
-  @Before
+  @BeforeEach
   public void reset() {
     HealthCheckerManager.getInstance().unregister(good.getName());
     HealthCheckerManager.getInstance().unregister(bad.getName());
diff --git a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestAbstractTransportDiscoveryFilter.java b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestAbstractTransportDiscoveryFilter.java
index 1c6ea66..c29e7d6 100644
--- a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestAbstractTransportDiscoveryFilter.java
+++ b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestAbstractTransportDiscoveryFilter.java
@@ -27,8 +27,8 @@
 import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
 import org.hamcrest.MatcherAssert;
 import org.hamcrest.Matchers;
-import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class TestAbstractTransportDiscoveryFilter {
   class AbstractEndpointDiscoveryFilterForTest extends AbstractEndpointDiscoveryFilter {
@@ -115,8 +115,7 @@
     return instance;
   }
 
-  private Map<String, MicroserviceInstance> createMicroserviceInstances(String name,
-      MicroserviceInstance... instances) {
+  private Map<String, MicroserviceInstance> createMicroserviceInstances(MicroserviceInstance... instances) {
     Map<String, MicroserviceInstance> map = new LinkedHashMap<>();
     for (MicroserviceInstance instance : instances) {
       map.put(instance.getInstanceId(), instance);
@@ -128,7 +127,7 @@
   public void createDiscoveryTree_oneTransport() {
     MicroserviceInstance instance1 = createInstance("a", "b");
     MicroserviceInstance instance2 = createInstance("b");
-    Map<String, MicroserviceInstance> instances = createMicroserviceInstances("name", instance1, instance2);
+    Map<String, MicroserviceInstance> instances = createMicroserviceInstances(instance1, instance2);
     parent.data(instances);
 
     result = filter.createDiscoveryTreeNode("a", context, parent);
@@ -141,7 +140,7 @@
   public void createDiscoveryTree_allTransport() {
     MicroserviceInstance instance1 = createInstance("a", "b");
     MicroserviceInstance instance2 = createInstance("b");
-    Map<String, MicroserviceInstance> instances = createMicroserviceInstances("name", instance1, instance2);
+    Map<String, MicroserviceInstance> instances = createMicroserviceInstances(instance1, instance2);
     parent.data(instances);
 
     result = filter.createDiscoveryTreeNode("", context, parent);
@@ -158,7 +157,7 @@
   public void createDiscoveryTree_ignoreInvalid() {
     MicroserviceInstance instance1 = createInstance("a", "b");
     MicroserviceInstance instance2 = createInstance("");
-    Map<String, MicroserviceInstance> instances = createMicroserviceInstances("name", instance1, instance2);
+    Map<String, MicroserviceInstance> instances = createMicroserviceInstances(instance1, instance2);
     parent.data(instances);
 
     result = filter.createDiscoveryTreeNode("", context, parent);
@@ -171,7 +170,7 @@
   public void createEndpointNull() {
     disableCreate = true;
     MicroserviceInstance instance1 = createInstance("a", "b");
-    Map<String, MicroserviceInstance> instances = createMicroserviceInstances("name", instance1);
+    Map<String, MicroserviceInstance> instances = createMicroserviceInstances(instance1);
     parent.data(instances);
 
     result = filter.createDiscoveryTreeNode("", context, parent);
