diff --git a/handlers/handler-fault-injection/pom.xml b/handlers/handler-fault-injection/pom.xml
index 420a3f4..faa140d 100755
--- a/handlers/handler-fault-injection/pom.xml
+++ b/handlers/handler-fault-injection/pom.xml
@@ -52,10 +52,5 @@
       <artifactId>foundation-test-scaffolding</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.jmockit</groupId>
-      <artifactId>jmockit</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 </project>
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
index 4d0c954..76b8e94 100755
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,4 +57,10 @@
 
     return dynamicIntProperty.get();
   }
+
+  @VisibleForTesting
+  static Map<String, String> getCfgCallback() {
+    return cfgCallback;
+  }
+
 }
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
index 058a7db..dbd1e21 100755
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
@@ -26,6 +26,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
 
@@ -162,4 +163,14 @@
     // if both are not matching then delay/abort should be added.
     return (resultNew != resultOld);
   }
+
+  @VisibleForTesting
+  static Map<String, AtomicLong> getRequestCount() {
+    return requestCount;
+  }
+
+  @VisibleForTesting
+  static Map<String, AtomicInteger> getConfigCenterValue() {
+    return configCenterValue;
+  }
 }
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
index 5e76f41..0fa00fa 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
@@ -17,8 +17,6 @@
 
 package org.apache.servicecomb.faultinjection;
 
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.servicecomb.core.Invocation;
@@ -27,28 +25,27 @@
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+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.mockito.Mockito;
 
 import com.netflix.config.DynamicProperty;
 
 import io.vertx.core.Vertx;
-import mockit.Deencapsulation;
 
 public class AbortFaultTest {
   private Invocation invocation;
 
   @SuppressWarnings("unchecked")
-  @Before
+  @BeforeEach
   public void before() {
     ArchaiusUtils.resetConfig();
-    ((Map<String, String>) Deencapsulation.getField(FaultInjectionConfig.class, "cfgCallback")).clear();
-    ((Map<String, AtomicLong>) Deencapsulation.getField(FaultInjectionUtil.class, "requestCount")).clear();
-    ((Map<String, AtomicInteger>) Deencapsulation.getField(FaultInjectionUtil.class, "configCenterValue")).clear();
+    FaultInjectionConfig.getCfgCallback().clear();
+    FaultInjectionUtil.getRequestCount().clear();
+    FaultInjectionUtil.getConfigCenterValue().clear();
 
     invocation = Mockito.mock(Invocation.class);
     Transport transport = Mockito.mock(Transport.class);
@@ -60,12 +57,12 @@
     Mockito.when(invocation.getMicroserviceName()).thenReturn("carts6");
   }
 
-  @After
+  @AfterEach
   public void after() {
     ArchaiusUtils.resetConfig();
   }
 
-  @AfterClass
+  @AfterAll
   public static void classTeardown() {
     VertxUtils.blockCloseVertxByName("faultinjectionTest");
   }
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
index e2039cd..33940c3 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
@@ -17,10 +17,8 @@
 
 package org.apache.servicecomb.faultinjection;
 
-import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.servicecomb.core.Invocation;
@@ -28,28 +26,27 @@
 import org.apache.servicecomb.foundation.common.Holder;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+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.mockito.Mockito;
 
 import com.netflix.config.DynamicProperty;
 
 import io.vertx.core.Vertx;
-import mockit.Deencapsulation;
 
 public class DelayFaultTest {
   private Invocation invocation;
 
   @SuppressWarnings("unchecked")
-  @Before
+  @BeforeEach
   public void before() {
     ArchaiusUtils.resetConfig();
-    ((Map<String, String>) Deencapsulation.getField(FaultInjectionConfig.class, "cfgCallback")).clear();
-    ((Map<String, AtomicLong>) Deencapsulation.getField(FaultInjectionUtil.class, "requestCount")).clear();
-    ((Map<String, AtomicInteger>) Deencapsulation.getField(FaultInjectionUtil.class, "configCenterValue")).clear();
+    FaultInjectionConfig.getCfgCallback().clear();
+    FaultInjectionUtil.getRequestCount().clear();
+    FaultInjectionUtil.getConfigCenterValue().clear();
 
     invocation = Mockito.mock(Invocation.class);
     Transport transport = Mockito.mock(Transport.class);
@@ -61,12 +58,12 @@
     Mockito.when(invocation.getMicroserviceName()).thenReturn("carts6");
   }
 
-  @After
+  @AfterEach
   public void after() {
     ArchaiusUtils.resetConfig();
   }
 
-  @AfterClass
+  @AfterAll
   public static void classTeardown() {
     VertxUtils.blockCloseVertxByName("faultinjectionTest");
   }
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
index f2c9cf8..5004fde 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
@@ -17,10 +17,10 @@
 
 package org.apache.servicecomb.faultinjection;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 /**
  * Tests the fault injection configuration.
@@ -36,16 +36,14 @@
 
   DelayFault delayFault;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
-    faultCfg = new FaultInjectionConfig();
-    faultConst = new FaultInjectionConst();
     faultParam = new FaultParam(10);
     abortFault = new AbortFault();
     delayFault = new DelayFault();
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     faultCfg = null;
     faultConst = null;
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectHandler.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectHandler.java
index ebc8cd1..3e2eb55 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectHandler.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectHandler.java
@@ -29,11 +29,11 @@
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.swagger.invocation.AsyncResponse;
 import org.apache.servicecomb.swagger.invocation.Response;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+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.mockito.InjectMocks;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -73,7 +73,7 @@
     }
   };
 
-  @Before
+  @BeforeEach
   public void setUp() {
     ArchaiusUtils.resetConfig();
     handler = new FaultInjectionHandler();
@@ -84,7 +84,7 @@
     MockitoAnnotations.openMocks(this);
   }
 
-  @After
+  @AfterEach
   public void tearDown() {
     handler = null;
     invocation = null;
@@ -94,7 +94,7 @@
     ArchaiusUtils.resetConfig();
   }
 
-  @AfterClass
+  @AfterAll
   public static void classTeardown() {
     VertxUtils.blockCloseVertxByName("faultinjectionTest");
   }
diff --git a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/schema/TestPojoProducers.java b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/schema/TestPojoProducers.java
index 14c7500..39893d3 100644
--- a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/schema/TestPojoProducers.java
+++ b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/schema/TestPojoProducers.java
@@ -17,7 +17,6 @@
 
 package org.apache.servicecomb.provider.pojo.schema;
 
-import mockit.Expectations;
 import mockit.Injectable;
 import org.apache.servicecomb.foundation.test.scaffolding.spring.SpringUtils;
 import org.apache.servicecomb.provider.pojo.IPerson;
@@ -58,10 +57,6 @@
   @Test
   public void testPojoProducersSchemaIdNull(@Injectable RpcSchema schema) {
     IPerson bean = new PersonEmptySchema();
-    new Expectations() {
-      {
-      }
-    };
     Assertions.assertSame(bean, producer.postProcessAfterInitialization(bean, "test"));
     Assertions.assertEquals(producer.getProducerMetas().size(), 1);
   }
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceInstanceHeartbeatTask.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceInstanceHeartbeatTask.java
index 028de98..1b64194 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceInstanceHeartbeatTask.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceInstanceHeartbeatTask.java
@@ -65,10 +65,6 @@
   @Test
   public void testNotRegistered(@Mocked ServiceRegistryClient srClient,
       @Mocked MicroserviceInstanceRegisterTask registerTask) {
-    new Expectations() {
-      {
-      }
-    };
 
     MicroserviceInstanceHeartbeatTask task =
         new MicroserviceInstanceHeartbeatTask(eventBus, srClient, microservice);
