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

sunnianjun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new d413b44e7 Add ReflectionUtils into test module (#2334)
d413b44e7 is described below

commit d413b44e7bd399601cc5a6294e636293ba593056
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 29 13:23:46 2023 +0800

    Add ReflectionUtils into test module (#2334)
    
    * Add ReflectionUtils into test module
    
    * Add ReflectionUtils into test module
    
    * Add ReflectionUtils into test module
    
    * Add ReflectionUtils into test module
---
 .../fixture/DingtalkInternalController.java        |  9 ++-
 ecosystem/error-handler/type/email/pom.xml         |  7 +++
 .../handler/email/EmailJobErrorHandlerTest.java    | 18 ++----
 .../DistributeOnceElasticJobListenerTest.java      |  2 +-
 .../kernel/integrate/BaseIntegrateTest.java        |  2 +-
 .../annotation/integrate/BaseAnnotationTest.java   |  2 +-
 .../internal/config/ConfigurationServiceTest.java  |  2 +-
 .../config/RescheduleListenerManagerTest.java      |  2 +-
 .../election/ElectionListenerManagerTest.java      |  2 +-
 .../internal/election/LeaderServiceTest.java       |  2 +-
 .../kernel/internal/executor/JobFacadeTest.java    |  2 +-
 .../error/handler/JobErrorHandlerReloaderTest.java | 20 ++-----
 .../threadpool/ExecutorServiceReloaderTest.java    | 20 ++-----
 .../failover/FailoverListenerManagerTest.java      |  2 +-
 .../internal/failover/FailoverServiceTest.java     |  2 +-
 .../guarantee/GuaranteeListenerManagerTest.java    |  2 +-
 .../internal/guarantee/GuaranteeServiceTest.java   |  2 +-
 .../internal/instance/InstanceServiceTest.java     |  2 +-
 .../instance/ShutdownListenerManagerTest.java      |  2 +-
 .../internal/listener/ListenerManagerTest.java     |  2 +-
 .../RegistryCenterConnectionStateListenerTest.java |  2 +-
 .../internal/reconcile/ReconcileServiceTest.java   |  2 +-
 .../kernel/internal/schedule/JobRegistryTest.java  |  2 +-
 .../schedule/JobScheduleControllerTest.java        |  2 +-
 .../internal/schedule/SchedulerFacadeTest.java     |  2 +-
 .../kernel/internal/server/ServerServiceTest.java  |  2 +-
 .../kernel/internal/setup/SetUpFacadeTest.java     |  2 +-
 .../sharding/ExecutionContextServiceTest.java      |  2 +-
 .../internal/sharding/ExecutionServiceTest.java    |  2 +-
 .../MonitorExecutionListenerManagerTest.java       |  2 +-
 .../sharding/ShardingListenerManagerTest.java      |  2 +-
 .../internal/sharding/ShardingServiceTest.java     |  2 +-
 .../internal/snapshot/BaseSnapshotServiceTest.java |  2 +-
 .../snapshot/SnapshotServiceDisableTest.java       | 15 ++---
 .../internal/storage/JobNodeStorageTest.java       |  2 +-
 .../trigger/TriggerListenerManagerTest.java        |  2 +-
 .../zookeeper/ZookeeperElectionServiceTest.java    | 13 +----
 .../ZookeeperRegistryCenterForAuthTest.java        | 29 ++++-----
 .../ZookeeperRegistryCenterListenerTest.java       | 10 ++--
 .../ZookeeperRegistryCenterModifyTest.java         | 48 +++++++--------
 .../ZookeeperRegistryCenterQueryWithCacheTest.java |  4 +-
 ...okeeperRegistryCenterQueryWithoutCacheTest.java |  4 +-
 .../ZookeeperRegistryCenterTransactionTest.java    |  4 +-
 .../ZookeeperRegistryCenterWatchTest.java          |  4 +-
 .../env/RegistryCenterEnvironmentPreparer.java     | 37 ++++++++++++
 .../util/ZookeeperRegistryCenterTestUtil.java      | 68 ----------------------
 .../restful/NettyRestfulServiceConfiguration.java  | 17 +++---
 .../spring/boot/job/ElasticJobSpringBootTest.java  | 30 ++++------
 .../elasticjob/test}/util/ReflectionUtils.java     | 37 ++++++++++--
 49 files changed, 202 insertions(+), 252 deletions(-)

diff --git 
a/ecosystem/error-handler/type/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/fixture/DingtalkInternalController.java
 
b/ecosystem/error-handler/type/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/fixture/DingtalkInternalController.java
index 1dd005ba9..08572cacf 100644
--- 
a/ecosystem/error-handler/type/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/fixture/DingtalkInternalController.java
+++ 
b/ecosystem/error-handler/type/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/fixture/DingtalkInternalController.java
@@ -31,7 +31,6 @@ import 
org.apache.shardingsphere.elasticjob.restful.annotation.RequestBody;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
@@ -53,7 +52,7 @@ public final class DingtalkInternalController implements 
RestfulController {
      * @param timestamp timestamp
      * @param sign sign
      * @param body body
-     * @return send Result
+     * @return send result
      */
     @SneakyThrows
     @Mapping(method = Http.POST, path = "/send")
@@ -64,7 +63,7 @@ public final class DingtalkInternalController implements 
RestfulController {
         if (!ACCESS_TOKEN.equals(accessToken)) {
             return GsonFactory.getGson().toJson(ImmutableMap.of("errcode", 
300001, "errmsg", "token is not exist"));
         }
-        String content = 
Map.class.cast(body.get("text")).get("content").toString();
+        String content = ((Map) body.get("text")).get("content").toString();
         if (!content.startsWith(KEYWORD)) {
             return GsonFactory.getGson().toJson(ImmutableMap.of("errcode", 
310000, "errmsg", "keywords not in content, more: 
[https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq]";));
         }
@@ -78,11 +77,11 @@ public final class DingtalkInternalController implements 
RestfulController {
         return GsonFactory.getGson().toJson(ImmutableMap.of("errcode", 0, 
"errmsg", "ok"));
     }
     
-    private String sign(final Long timestamp) throws NoSuchAlgorithmException, 
UnsupportedEncodingException, InvalidKeyException {
+    private String sign(final Long timestamp) throws NoSuchAlgorithmException, 
InvalidKeyException {
         String stringToSign = timestamp + "\n" + SECRET;
         Mac mac = Mac.getInstance("HmacSHA256");
         mac.init(new SecretKeySpec(SECRET.getBytes(StandardCharsets.UTF_8), 
"HmacSHA256"));
         byte[] signData = 
mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
-        return new String(Base64.getEncoder().encode(signData), 
StandardCharsets.UTF_8.name());
+        return new String(Base64.getEncoder().encode(signData), 
StandardCharsets.UTF_8);
     }
 }
diff --git a/ecosystem/error-handler/type/email/pom.xml 
b/ecosystem/error-handler/type/email/pom.xml
index 82932ddd9..78853f3ca 100644
--- a/ecosystem/error-handler/type/email/pom.xml
+++ b/ecosystem/error-handler/type/email/pom.xml
@@ -32,6 +32,13 @@
             <version>${project.parent.version}</version>
         </dependency>
         
+        <dependency>
+            <groupId>org.apache.shardingsphere.elasticjob</groupId>
+            <artifactId>elasticjob-test-util</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>test</scope>
+        </dependency>
+        
         <dependency>
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
diff --git 
a/ecosystem/error-handler/type/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
 
b/ecosystem/error-handler/type/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
index 78a1cf359..3c216f262 100644
--- 
a/ecosystem/error-handler/type/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
+++ 
b/ecosystem/error-handler/type/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
@@ -20,8 +20,8 @@ package 
org.apache.shardingsphere.elasticjob.error.handler.email;
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
-import lombok.SneakyThrows;
 import org.apache.shardingsphere.elasticjob.error.handler.JobErrorHandler;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
@@ -33,9 +33,9 @@ import org.slf4j.LoggerFactory;
 
 import javax.mail.Address;
 import javax.mail.Message;
+import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.Transport;
-import java.lang.reflect.Field;
 import java.util.List;
 import java.util.Properties;
 
@@ -81,11 +81,10 @@ class EmailJobErrorHandlerTest {
     }
     
     @Test
-    @SneakyThrows
-    void assertHandleExceptionSucceedInSendingEmail() {
+    void assertHandleExceptionSucceedInSendingEmail() throws 
MessagingException {
         EmailJobErrorHandler emailJobErrorHandler = 
getEmailJobErrorHandler(createConfigurationProperties());
         setUpMockSession(session);
-        setFieldValue(emailJobErrorHandler, "session", session);
+        ReflectionUtils.setFieldValue(emailJobErrorHandler, "session", 
session);
         Throwable cause = new RuntimeException("test");
         String jobName = "test_job";
         when(session.getTransport()).thenReturn(transport);
@@ -102,17 +101,10 @@ class EmailJobErrorHandlerTest {
     
     private void setUpMockSession(final Session session) {
         Properties props = new Properties();
-        setFieldValue(session, "props", props);
+        ReflectionUtils.setFieldValue(session, "props", props);
         when(session.getProperties()).thenReturn(props);
     }
     
-    @SneakyThrows
-    private void setFieldValue(final Object target, final String fieldName, 
final Object fieldValue) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        field.setAccessible(true);
-        field.set(target, fieldValue);
-    }
-    
     private Properties createConfigurationProperties() {
         Properties result = new Properties();
         result.setProperty(EmailPropertiesConstants.HOST, "localhost");
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/api/listener/DistributeOnceElasticJobListenerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/api/listener/DistributeOnceElasticJobListenerTest.java
index eebcfcf16..8b4b57f30 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/api/listener/DistributeOnceElasticJobListenerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/api/listener/DistributeOnceElasticJobListenerTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.infra.listener.ShardingContexts;
 import 
org.apache.shardingsphere.elasticjob.kernel.api.listener.fixture.ElasticJobListenerCaller;
 import 
org.apache.shardingsphere.elasticjob.kernel.api.listener.fixture.TestDistributeOnceElasticJobListener;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.guarantee.GuaranteeService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/integrate/BaseIntegrateTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/integrate/BaseIntegrateTest.java
index 55b803da2..3a8b340c6 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/integrate/BaseIntegrateTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/integrate/BaseIntegrateTest.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.api.bootstrap.impl.OneOffJobB
 import 
org.apache.shardingsphere.elasticjob.kernel.api.bootstrap.impl.ScheduleJobBootstrap;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.election.LeaderService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/integrate/BaseAnnotationTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/integrate/BaseAnnotationTest.java
index 3b729764c..483bf963c 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/integrate/BaseAnnotationTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/integrate/BaseAnnotationTest.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.api.bootstrap.impl.ScheduleJo
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.annotation.JobAnnotationBuilder;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.election.LeaderService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationServiceTest.java
index 3b445d3ee..62d8c8e15 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationServiceTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.infra.exception.JobExecutionEnvironm
 import org.apache.shardingsphere.elasticjob.infra.yaml.YamlEngine;
 import org.apache.shardingsphere.elasticjob.kernel.fixture.YamlConstants;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManagerTest.java
index dd2006808..a59224e5f 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManagerTest.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.fixture.YamlConstants;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManagerTest.java
index eca460720..448ec37ce 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManagerTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobSchedule
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerStatus;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderServiceTest.java
index d5729780c..4b37afff8 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderServiceTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/JobFacadeTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/JobFacadeTest.java
index 2ab96dba5..b84c0191d 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/JobFacadeTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/JobFacadeTest.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverSer
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionContextService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.tracing.JobTracingEventBus;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/error/handler/JobErrorHandlerReloaderTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/error/handler/JobErrorHandlerReloaderTest.java
index 741b22113..cbf089926 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/error/handler/JobErrorHandlerReloaderTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/error/handler/JobErrorHandlerReloaderTest.java
@@ -17,17 +17,16 @@
 
 package 
org.apache.shardingsphere.elasticjob.kernel.internal.executor.error.handler;
 
-import lombok.SneakyThrows;
 import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
 import org.apache.shardingsphere.elasticjob.error.handler.JobErrorHandler;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.executor.error.handler.general.IgnoreJobErrorHandler;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.executor.error.handler.general.LogJobErrorHandler;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.lang.reflect.Field;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -59,8 +58,8 @@ class JobErrorHandlerReloaderTest {
         JobConfiguration jobConfig = JobConfiguration.newBuilder("job", 
1).jobErrorHandlerType("IGNORE").build();
         try (JobErrorHandlerReloader jobErrorHandlerReloader = new 
JobErrorHandlerReloader(jobConfig)) {
             when(jobErrorHandler.getType()).thenReturn("mock");
-            setField(jobErrorHandlerReloader, "jobErrorHandler", 
jobErrorHandler);
-            setField(jobErrorHandlerReloader, "props", new Properties());
+            ReflectionUtils.setFieldValue(jobErrorHandlerReloader, 
"jobErrorHandler", jobErrorHandler);
+            ReflectionUtils.setFieldValue(jobErrorHandlerReloader, "props", 
new Properties());
             String newJobErrorHandlerType = "LOG";
             JobConfiguration newJobConfig = JobConfiguration.newBuilder("job", 
1).jobErrorHandlerType(newJobErrorHandlerType).build();
             jobErrorHandlerReloader.reloadIfNecessary(newJobConfig);
@@ -86,20 +85,9 @@ class JobErrorHandlerReloaderTest {
     void assertShutdown() {
         JobConfiguration jobConfig = JobConfiguration.newBuilder("job", 
1).jobErrorHandlerType("IGNORE").build();
         try (JobErrorHandlerReloader jobErrorHandlerReloader = new 
JobErrorHandlerReloader(jobConfig)) {
-            setField(jobErrorHandlerReloader, "jobErrorHandler", 
jobErrorHandler);
+            ReflectionUtils.setFieldValue(jobErrorHandlerReloader, 
"jobErrorHandler", jobErrorHandler);
             jobErrorHandlerReloader.close();
             verify(jobErrorHandler).close();
         }
     }
-    
-    @SneakyThrows
-    private void setField(final Object target, final String fieldName, final 
Object value) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        boolean originAccessible = field.isAccessible();
-        if (!originAccessible) {
-            field.setAccessible(true);
-        }
-        field.set(target, value);
-        field.setAccessible(originAccessible);
-    }
 }
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/threadpool/ExecutorServiceReloaderTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/threadpool/ExecutorServiceReloaderTest.java
index e2bc5e5cd..dff7117bf 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/threadpool/ExecutorServiceReloaderTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/executor/threadpool/ExecutorServiceReloaderTest.java
@@ -17,14 +17,13 @@
 
 package 
org.apache.shardingsphere.elasticjob.kernel.internal.executor.threadpool;
 
-import lombok.SneakyThrows;
 import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.lang.reflect.Field;
 import java.util.concurrent.ExecutorService;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -54,8 +53,8 @@ class ExecutorServiceReloaderTest {
     @Test
     void assertReload() {
         ExecutorServiceReloader executorServiceReloader = new 
ExecutorServiceReloader(JobConfiguration.newBuilder("job", 
1).jobExecutorThreadPoolSizeProviderType("SINGLE_THREAD").build());
-        setField(executorServiceReloader, 
"jobExecutorThreadPoolSizeProviderType", "mock");
-        setField(executorServiceReloader, "executorService", 
mockExecutorService);
+        ReflectionUtils.setFieldValue(executorServiceReloader, 
"jobExecutorThreadPoolSizeProviderType", "mock");
+        ReflectionUtils.setFieldValue(executorServiceReloader, 
"executorService", mockExecutorService);
         JobConfiguration jobConfig = JobConfiguration.newBuilder("job", 
1).build();
         executorServiceReloader.reloadIfNecessary(jobConfig);
         verify(mockExecutorService).shutdown();
@@ -80,19 +79,8 @@ class ExecutorServiceReloaderTest {
     @Test
     void assertShutdown() {
         ExecutorServiceReloader executorServiceReloader = new 
ExecutorServiceReloader(JobConfiguration.newBuilder("job", 
1).jobExecutorThreadPoolSizeProviderType("SINGLE_THREAD").build());
-        setField(executorServiceReloader, "executorService", 
mockExecutorService);
+        ReflectionUtils.setFieldValue(executorServiceReloader, 
"executorService", mockExecutorService);
         executorServiceReloader.close();
         verify(mockExecutorService).shutdown();
     }
-    
-    @SneakyThrows
-    private void setField(final Object target, final String fieldName, final 
Object value) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        boolean originAccessible = field.isAccessible();
-        if (!originAccessible) {
-            field.setAccessible(true);
-        }
-        field.set(target, value);
-        field.setAccessible(originAccessible);
-    }
 }
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManagerTest.java
index ed83b72c7..a5dfafa4c 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManagerTest.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobSchedule
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
 import 
org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEventListener;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverServiceTest.java
index 700d42121..5d2c1a0a0 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverServiceTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManagerTest.java
index b51f851ea..8de42c183 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManagerTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.elasticjob.kernel.internal.guarantee;
 import org.apache.shardingsphere.elasticjob.infra.listener.ElasticJobListener;
 import 
org.apache.shardingsphere.elasticjob.kernel.api.listener.AbstractDistributeOnceElasticJobListener;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
 import 
org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEventListener;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeServiceTest.java
index b57d47595..0db9a2729 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeServiceTest.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.elasticjob.infra.listener.ShardingContexts;
 import 
org.apache.shardingsphere.elasticjob.kernel.api.listener.AbstractDistributeOnceElasticJobListener;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceServiceTest.java
index 7fbb551c6..ae01059cd 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceServiceTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManagerTest.java
index d6bcf4146..da8c0f762 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManagerTest.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.SchedulerFacade;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManagerTest.java
index 3b24e005f..e952653c4 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManagerTest.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.MonitorExec
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.trigger.TriggerListenerManager;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListenerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListenerTest.java
index 2eaacd699..ce5524139 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListenerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListenerTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobSchedule
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import 
org.apache.shardingsphere.elasticjob.reg.listener.ConnectionStateChangedEventListener.State;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileServiceTest.java
index c086172ac..ea91034a7 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileServiceTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistryTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistryTest.java
index c9e8f46c8..04e7fe28b 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistryTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistryTest.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule;
 
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.is;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleControllerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleControllerTest.java
index 7638f6eae..b85551f92 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleControllerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleControllerTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.elasticjob.kernel.internal.schedule;
 
 import org.apache.shardingsphere.elasticjob.infra.exception.JobSystemException;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacadeTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacadeTest.java
index b97a253e8..a63e34cae 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacadeTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacadeTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.election.LeaderService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerServiceTest.java
index 5352f9f69..d808119bb 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerServiceTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacadeTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacadeTest.java
index 0a9393b62..c61434c7e 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacadeTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacadeTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.listener.ListenerMan
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.reconcile.ReconcileService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextServiceTest.java
index 08d77ff14..04f2c930a 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextServiceTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.elasticjob.infra.listener.ShardingContexts;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionServiceTest.java
index b67b69599..e66d54fdc 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionServiceTest.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.elasticjob.infra.listener.ShardingContexts;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManagerTest.java
index b49217583..48101f36c 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManagerTest.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding;
 
 import org.apache.shardingsphere.elasticjob.kernel.fixture.YamlConstants;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManagerTest.java
index 200651225..06f8f75f3 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManagerTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.config.Configuration
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent.Type;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingServiceTest.java
index df8c4f550..f0d9c9eaa 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingServiceTest.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.server.ServerService;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/BaseSnapshotServiceTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/BaseSnapshotServiceTest.java
index abf59a876..023a62c14 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/BaseSnapshotServiceTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/BaseSnapshotServiceTest.java
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.elasticjob.api.ElasticJob;
 import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
 import 
org.apache.shardingsphere.elasticjob.kernel.api.bootstrap.impl.ScheduleJobBootstrap;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
 import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/SnapshotServiceDisableTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/SnapshotServiceDisableTest.java
index 62c5a02fb..1024fa4bd 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/SnapshotServiceDisableTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/SnapshotServiceDisableTest.java
@@ -17,12 +17,11 @@
 
 package org.apache.shardingsphere.elasticjob.kernel.internal.snapshot;
 
-import lombok.SneakyThrows;
 import org.apache.shardingsphere.elasticjob.kernel.fixture.job.DetailedFooJob;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.lang.reflect.Field;
 import java.net.ServerSocket;
 
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -41,21 +40,15 @@ class SnapshotServiceDisableTest extends 
BaseSnapshotServiceTest {
     
     @Test
     void assertPortInvalid() {
-        assertThrows(IllegalArgumentException.class, () -> {
-            SnapshotService snapshotService = new 
SnapshotService(getREG_CENTER(), -1);
-            snapshotService.listen();
-        });
+        assertThrows(IllegalArgumentException.class, () -> new 
SnapshotService(getREG_CENTER(), -1).listen());
     }
     
     @Test
-    @SneakyThrows
-    void assertListenException() {
+    void assertListenException() throws IOException {
         ServerSocket serverSocket = new ServerSocket(9898);
         SnapshotService snapshotService = new SnapshotService(getREG_CENTER(), 
9898);
         snapshotService.listen();
         serverSocket.close();
-        Field field = 
snapshotService.getClass().getDeclaredField("serverSocket");
-        field.setAccessible(true);
-        assertNull(field.get(snapshotService));
+        assertNull(ReflectionUtils.getFieldValue(snapshotService, 
"serverSocket"));
     }
 }
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorageTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorageTest.java
index 2d43bcb62..33e69ac90 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorageTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorageTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.elasticjob.kernel.internal.storage;
 
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.listener.ListenerNotifierManager;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import 
org.apache.shardingsphere.elasticjob.reg.base.transaction.TransactionOperation;
 import org.apache.shardingsphere.elasticjob.reg.exception.RegException;
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManagerTest.java
 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManagerTest.java
index bb070e647..811bbce8e 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManagerTest.java
+++ 
b/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManagerTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstance
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobRegistry;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduleController;
 import 
org.apache.shardingsphere.elasticjob.kernel.internal.storage.JobNodeStorage;
-import org.apache.shardingsphere.elasticjob.kernel.util.ReflectionUtils;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionServiceTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionServiceTest.java
index 131479fd0..50cecb141 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionServiceTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionServiceTest.java
@@ -25,6 +25,7 @@ import org.apache.curator.retry.RetryOneTime;
 import org.apache.curator.test.KillSession;
 import org.apache.shardingsphere.elasticjob.reg.base.ElectionCandidate;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -32,7 +33,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.lang.reflect.Field;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
@@ -74,7 +74,7 @@ class ZookeeperElectionServiceTest {
         KillSession.kill(client.getZookeeperClient().getZooKeeper());
         service.stop();
         blockUntilCondition(() -> hasLeadership(anotherService));
-        ((CountDownLatch) getFieldValue(anotherService, 
"leaderLatch")).countDown();
+        ((CountDownLatch) ReflectionUtils.getFieldValue(anotherService, 
"leaderLatch")).countDown();
         blockUntilCondition(() -> !hasLeadership(anotherService));
         anotherService.stop();
         verify(anotherElectionCandidate, atLeastOnce()).startLeadership();
@@ -87,13 +87,6 @@ class ZookeeperElectionServiceTest {
     
     @SneakyThrows
     private boolean hasLeadership(final ZookeeperElectionService 
zookeeperElectionService) {
-        return ((LeaderSelector) getFieldValue(zookeeperElectionService, 
"leaderSelector")).hasLeadership();
-    }
-    
-    @SneakyThrows
-    private Object getFieldValue(final Object target, final String fieldName) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        field.setAccessible(true);
-        return field.get(target);
+        return ((LeaderSelector) 
ReflectionUtils.getFieldValue(zookeeperElectionService, 
"leaderSelector")).hasLeadership();
     }
 }
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterForAuthTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterForAuthTest.java
index 34fa53a61..95592c85c 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterForAuthTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterForAuthTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.RetryOneTime;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.apache.zookeeper.KeeperException.NoAuthException;
 import org.junit.jupiter.api.AfterAll;
@@ -49,7 +49,7 @@ class ZookeeperRegistryCenterForAuthTest {
         ZOOKEEPER_CONFIGURATION.setConnectionTimeoutMilliseconds(5000);
         zkRegCenter = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIGURATION);
         zkRegCenter.init();
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
     }
     
     @AfterAll
@@ -59,22 +59,25 @@ class ZookeeperRegistryCenterForAuthTest {
     
     @Test
     void assertInitWithDigestSuccess() throws Exception {
-        CuratorFramework client = CuratorFrameworkFactory.builder()
-                .connectString(EMBED_TESTING_SERVER.getConnectionString())
-                .retryPolicy(new RetryOneTime(2000))
-                .authorization("digest", "digest:password".getBytes()).build();
-        client.start();
-        client.blockUntilConnected();
-        assertThat(client.getData().forPath("/" + 
ZookeeperRegistryCenterForAuthTest.class.getName() + "/test/deep/nested"), 
is("deepNested".getBytes()));
+        try (
+                CuratorFramework client = CuratorFrameworkFactory.builder()
+                        
.connectString(EMBED_TESTING_SERVER.getConnectionString())
+                        .retryPolicy(new RetryOneTime(2000))
+                        .authorization("digest", 
"digest:password".getBytes()).build()) {
+            client.start();
+            client.blockUntilConnected();
+            assertThat(client.getData().forPath("/" + 
ZookeeperRegistryCenterForAuthTest.class.getName() + "/test/deep/nested"), 
is("deepNested".getBytes()));
+        }
     }
     
     @Test
     void assertInitWithDigestFailure() {
         assertThrows(NoAuthException.class, () -> {
-            CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000));
-            client.start();
-            client.blockUntilConnected();
-            client.getData().forPath("/" + 
ZookeeperRegistryCenterForAuthTest.class.getName() + "/test/deep/nested");
+            try (CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000))) {
+                client.start();
+                client.blockUntilConnected();
+                client.getData().forPath("/" + 
ZookeeperRegistryCenterForAuthTest.class.getName() + "/test/deep/nested");
+            }
         });
     }
 }
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterListenerTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterListenerTest.java
index 1b1657b41..205861e81 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterListenerTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterListenerTest.java
@@ -22,7 +22,7 @@ import org.apache.curator.framework.listen.Listenable;
 import org.apache.curator.framework.recipes.cache.CuratorCache;
 import org.apache.curator.framework.recipes.cache.CuratorCacheListener;
 import org.apache.curator.framework.state.ConnectionStateListener;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -66,8 +66,8 @@ class ZookeeperRegistryCenterListenerTest {
     @BeforeEach
     void setUp() {
         regCenter = new ZookeeperRegistryCenter(null);
-        ZookeeperRegistryCenterTestUtil.setFieldValue(regCenter, "caches", 
caches);
-        ZookeeperRegistryCenterTestUtil.setFieldValue(regCenter, "client", 
client);
+        ReflectionUtils.setFieldValue(regCenter, "caches", caches);
+        ReflectionUtils.setFieldValue(regCenter, "client", client);
     }
     
     @Test
@@ -140,11 +140,11 @@ class ZookeeperRegistryCenterListenerTest {
     
     @SuppressWarnings("unchecked")
     private Map<String, List<ConnectionStateListener>> getConnStateListeners() 
{
-        return (Map<String, List<ConnectionStateListener>>) 
ZookeeperRegistryCenterTestUtil.getFieldValue(regCenter, "connStateListeners");
+        return (Map<String, List<ConnectionStateListener>>) 
ReflectionUtils.getFieldValue(regCenter, "connStateListeners");
     }
     
     @SuppressWarnings("unchecked")
     private Map<String, List<CuratorCacheListener>> getDataListeners() {
-        return (Map<String, List<CuratorCacheListener>>) 
ZookeeperRegistryCenterTestUtil.getFieldValue(regCenter, "dataListeners");
+        return (Map<String, List<CuratorCacheListener>>) 
ReflectionUtils.getFieldValue(regCenter, "dataListeners");
     }
 }
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterModifyTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterModifyTest.java
index 10eda57b7..d4a1c9c5f 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterModifyTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterModifyTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.RetryOneTime;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -49,7 +49,7 @@ class ZookeeperRegistryCenterModifyTest {
         zkRegCenter = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIGURATION);
         ZOOKEEPER_CONFIGURATION.setConnectionTimeoutMilliseconds(30000);
         zkRegCenter.init();
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
     }
     
     @AfterAll
@@ -91,35 +91,37 @@ class ZookeeperRegistryCenterModifyTest {
     void assertPersistSequential() throws Exception {
         
assertThat(zkRegCenter.persistSequential("/sequential/test_sequential", 
"test_value"), startsWith("/sequential/test_sequential"));
         
assertThat(zkRegCenter.persistSequential("/sequential/test_sequential", 
"test_value"), startsWith("/sequential/test_sequential"));
-        CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000));
-        client.start();
-        client.blockUntilConnected();
-        List<String> actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
-        assertThat(actual.size(), is(2));
-        for (String each : actual) {
-            assertThat(each, startsWith("test_sequential"));
-            assertThat(zkRegCenter.get("/sequential/" + each), 
startsWith("test_value"));
+        try (CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000))) {
+            client.start();
+            client.blockUntilConnected();
+            List<String> actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
+            assertThat(actual.size(), is(2));
+            for (String each : actual) {
+                assertThat(each, startsWith("test_sequential"));
+                assertThat(zkRegCenter.get("/sequential/" + each), 
startsWith("test_value"));
+            }
+            zkRegCenter.remove("/sequential");
+            assertFalse(zkRegCenter.isExisted("/sequential"));
         }
-        zkRegCenter.remove("/sequential");
-        assertFalse(zkRegCenter.isExisted("/sequential"));
     }
     
     @Test
     void assertPersistEphemeralSequential() throws Exception {
         
zkRegCenter.persistEphemeralSequential("/sequential/test_ephemeral_sequential");
         
zkRegCenter.persistEphemeralSequential("/sequential/test_ephemeral_sequential");
-        CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000));
-        client.start();
-        client.blockUntilConnected();
-        List<String> actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
-        assertThat(actual.size(), is(2));
-        for (String each : actual) {
-            assertThat(each, startsWith("test_ephemeral_sequential"));
+        try (CuratorFramework client = 
CuratorFrameworkFactory.newClient(EMBED_TESTING_SERVER.getConnectionString(), 
new RetryOneTime(2000))) {
+            client.start();
+            client.blockUntilConnected();
+            List<String> actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
+            assertThat(actual.size(), is(2));
+            for (String each : actual) {
+                assertThat(each, startsWith("test_ephemeral_sequential"));
+            }
+            zkRegCenter.close();
+            actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
+            assertTrue(actual.isEmpty());
+            zkRegCenter.init();
         }
-        zkRegCenter.close();
-        actual = client.getChildren().forPath("/" + 
ZookeeperRegistryCenterModifyTest.class.getName() + "/sequential");
-        assertTrue(actual.isEmpty());
-        zkRegCenter.init();
     }
     
     @Test
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithCacheTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithCacheTest.java
index 5a2730690..59eb61cf8 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithCacheTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithCacheTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -42,7 +42,7 @@ class ZookeeperRegistryCenterQueryWithCacheTest {
         zkRegCenter = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIGURATION);
         ZOOKEEPER_CONFIGURATION.setConnectionTimeoutMilliseconds(30000);
         zkRegCenter.init();
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
         zkRegCenter.addCacheData("/test");
     }
     
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithoutCacheTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithoutCacheTest.java
index 99fa81960..c370073a8 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithoutCacheTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithoutCacheTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -47,7 +47,7 @@ class ZookeeperRegistryCenterQueryWithoutCacheTest {
         ZOOKEEPER_CONFIGURATION.setConnectionTimeoutMilliseconds(30000);
         zkRegCenter = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIGURATION);
         zkRegCenter.init();
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
         zkRegCenter.addCacheData("/other");
     }
     
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterTransactionTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterTransactionTest.java
index d52072810..b08795a04 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterTransactionTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterTransactionTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 
 import 
org.apache.shardingsphere.elasticjob.reg.base.transaction.TransactionOperation;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.apache.zookeeper.KeeperException;
 import org.junit.jupiter.api.BeforeAll;
@@ -51,7 +51,7 @@ class ZookeeperRegistryCenterTransactionTest {
     
     @BeforeEach
     void setup() {
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
     }
     
     @Test
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterWatchTest.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterWatchTest.java
index 8318bc4f9..1ead5e3f1 100644
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterWatchTest.java
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterWatchTest.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.elasticjob.reg.zookeeper;
 
 import org.apache.curator.utils.ThreadUtils;
 import org.apache.shardingsphere.elasticjob.reg.listener.DataChangedEvent;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.util.ZookeeperRegistryCenterTestUtil;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.env.RegistryCenterEnvironmentPreparer;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -49,7 +49,7 @@ class ZookeeperRegistryCenterWatchTest {
         zkRegCenter = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIGURATION);
         ZOOKEEPER_CONFIGURATION.setConnectionTimeoutMilliseconds(30000);
         zkRegCenter.init();
-        ZookeeperRegistryCenterTestUtil.persist(zkRegCenter);
+        RegistryCenterEnvironmentPreparer.persist(zkRegCenter);
     }
     
     @AfterAll
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/env/RegistryCenterEnvironmentPreparer.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/env/RegistryCenterEnvironmentPreparer.java
new file mode 100644
index 000000000..1e86d4e93
--- /dev/null
+++ 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/env/RegistryCenterEnvironmentPreparer.java
@@ -0,0 +1,37 @@
+/*
+ * 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.shardingsphere.elasticjob.reg.zookeeper.env;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class RegistryCenterEnvironmentPreparer {
+    
+    /**
+     * Persist the data to registry center.
+     *
+     * @param registryCenter ZooKeeper registry center
+     */
+    public static void persist(final ZookeeperRegistryCenter registryCenter) {
+        registryCenter.persist("/test", "test");
+        registryCenter.persist("/test/deep/nested", "deepNested");
+        registryCenter.persist("/test/child", "child");
+    }
+}
diff --git 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/util/ZookeeperRegistryCenterTestUtil.java
 
b/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/util/ZookeeperRegistryCenterTestUtil.java
deleted file mode 100644
index dc16f0dd9..000000000
--- 
a/registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/util/ZookeeperRegistryCenterTestUtil.java
+++ /dev/null
@@ -1,68 +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.shardingsphere.elasticjob.reg.zookeeper.util;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.SneakyThrows;
-import 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
-
-import java.lang.reflect.Field;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ZookeeperRegistryCenterTestUtil {
-    
-    /**
-     * Persist the data to registry center.
-     *
-     * @param zookeeperRegistryCenter registry center
-     */
-    public static void persist(final ZookeeperRegistryCenter 
zookeeperRegistryCenter) {
-        zookeeperRegistryCenter.persist("/test", "test");
-        zookeeperRegistryCenter.persist("/test/deep/nested", "deepNested");
-        zookeeperRegistryCenter.persist("/test/child", "child");
-    }
-    
-    /**
-     * Set field value use reflection.
-     *
-     * @param target target object
-     * @param fieldName field name
-     * @param fieldValue field value
-     */
-    @SneakyThrows
-    public static void setFieldValue(final Object target, final String 
fieldName, final Object fieldValue) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        field.setAccessible(true);
-        field.set(target, fieldValue);
-    }
-    
-    /**
-     * Get field value use reflection.
-     *
-     * @param target target object
-     * @param fieldName field name
-     * @return field value
-     */
-    @SneakyThrows
-    public static Object getFieldValue(final Object target, final String 
fieldName) {
-        Field field = target.getClass().getDeclaredField(fieldName);
-        field.setAccessible(true);
-        return field.get(target);
-    }
-}
diff --git 
a/restful/src/main/java/org/apache/shardingsphere/elasticjob/restful/NettyRestfulServiceConfiguration.java
 
b/restful/src/main/java/org/apache/shardingsphere/elasticjob/restful/NettyRestfulServiceConfiguration.java
index 9a6878726..4b4414b1f 100644
--- 
a/restful/src/main/java/org/apache/shardingsphere/elasticjob/restful/NettyRestfulServiceConfiguration.java
+++ 
b/restful/src/main/java/org/apache/shardingsphere/elasticjob/restful/NettyRestfulServiceConfiguration.java
@@ -32,27 +32,26 @@ import java.util.Map;
 /**
  * Configuration for {@link NettyRestfulService}.
  */
-@Getter
 @RequiredArgsConstructor
+@Getter
+@Setter
 public final class NettyRestfulServiceConfiguration {
     
+    private final List<Filter> filterInstances = new LinkedList<>();
+    
+    private final List<RestfulController> controllerInstances = new 
LinkedList<>();
+    
+    private final Map<Class<? extends Throwable>, ExceptionHandler<? extends 
Throwable>> exceptionHandlers = new HashMap<>();
+    
     private final int port;
     
-    @Setter
     private String host;
     
     /**
      * If trailing slash sensitive, <code>/foo/bar</code> is not equals to 
<code>/foo/bar/</code>.
      */
-    @Setter
     private boolean trailingSlashSensitive;
     
-    private final List<Filter> filterInstances = new LinkedList<>();
-    
-    private final List<RestfulController> controllerInstances = new 
LinkedList<>();
-    
-    private final Map<Class<? extends Throwable>, ExceptionHandler<? extends 
Throwable>> exceptionHandlers = new HashMap<>();
-    
     /**
      * Add instances of {@link Filter}.
      *
diff --git 
a/spring/boot-starter/src/test/java/org/apache/shardingsphere/elasticjob/spring/boot/job/ElasticJobSpringBootTest.java
 
b/spring/boot-starter/src/test/java/org/apache/shardingsphere/elasticjob/spring/boot/job/ElasticJobSpringBootTest.java
index 2cd365349..1937eacd0 100644
--- 
a/spring/boot-starter/src/test/java/org/apache/shardingsphere/elasticjob/spring/boot/job/ElasticJobSpringBootTest.java
+++ 
b/spring/boot-starter/src/test/java/org/apache/shardingsphere/elasticjob/spring/boot/job/ElasticJobSpringBootTest.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.elasticjob.spring.boot.job.fixture.job.impl.Cus
 import 
org.apache.shardingsphere.elasticjob.spring.boot.reg.ZookeeperProperties;
 import 
org.apache.shardingsphere.elasticjob.spring.boot.tracing.TracingProperties;
 import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
+import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.tracing.api.TracingConfiguration;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.BeforeAll;
@@ -39,7 +40,6 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.test.context.ActiveProfiles;
 
 import javax.sql.DataSource;
-import java.lang.reflect.Field;
 import java.sql.SQLException;
 import java.util.Arrays;
 import java.util.Collection;
@@ -147,36 +147,26 @@ class ElasticJobSpringBootTest {
     }
     
     @Test
-    void assertOneOffJobBootstrapBeanName() throws NoSuchFieldException, 
SecurityException, IllegalArgumentException, IllegalAccessException {
+    void assertOneOffJobBootstrapBeanName() {
         assertNotNull(applicationContext);
-        OneOffJobBootstrap customTestJobBootstrap =
-                applicationContext.getBean("customTestJobBean", 
OneOffJobBootstrap.class);
+        OneOffJobBootstrap customTestJobBootstrap = 
applicationContext.getBean("customTestJobBean", OneOffJobBootstrap.class);
         assertNotNull(customTestJobBootstrap);
-        Field jobSchedulerField = 
customTestJobBootstrap.getClass().getDeclaredField("jobScheduler");
-        jobSchedulerField.setAccessible(true);
-        Collection<JobExtraConfiguration> extraConfigurations =
-                ((JobScheduler) 
jobSchedulerField.get(customTestJobBootstrap)).getJobConfig().getExtraConfigurations();
-        assertThat(extraConfigurations.size(), is(0));
-        OneOffJobBootstrap printTestJobBootstrap =
-                applicationContext.getBean("printTestJobBean", 
OneOffJobBootstrap.class);
-        jobSchedulerField = 
printTestJobBootstrap.getClass().getDeclaredField("jobScheduler");
-        jobSchedulerField.setAccessible(true);
-        extraConfigurations =
-                ((JobScheduler) 
jobSchedulerField.get(printTestJobBootstrap)).getJobConfig().getExtraConfigurations();
-        assertThat(extraConfigurations.size(), is(1));
+        Collection<JobExtraConfiguration> extraConfigs = ((JobScheduler) 
ReflectionUtils.getFieldValue(customTestJobBootstrap, 
"jobScheduler")).getJobConfig().getExtraConfigurations();
+        assertThat(extraConfigs.size(), is(0));
+        OneOffJobBootstrap printTestJobBootstrap = 
applicationContext.getBean("printTestJobBean", OneOffJobBootstrap.class);
+        extraConfigs = ((JobScheduler) 
ReflectionUtils.getFieldValue(printTestJobBootstrap, 
"jobScheduler")).getJobConfig().getExtraConfigurations();
+        assertThat(extraConfigs.size(), is(1));
     }
     
     @Test
     void assertDefaultBeanNameWithClassJob() {
         assertNotNull(applicationContext);
-        
assertNotNull(applicationContext.getBean("defaultBeanNameClassJobScheduleJobBootstrap",
-                ScheduleJobBootstrap.class));
+        
assertNotNull(applicationContext.getBean("defaultBeanNameClassJobScheduleJobBootstrap",
 ScheduleJobBootstrap.class));
     }
     
     @Test
     void assertDefaultBeanNameWithTypeJob() {
         assertNotNull(applicationContext);
-        
assertNotNull(applicationContext.getBean("defaultBeanNameTypeJobScheduleJobBootstrap",
-                ScheduleJobBootstrap.class));
+        
assertNotNull(applicationContext.getBean("defaultBeanNameTypeJobScheduleJobBootstrap",
 ScheduleJobBootstrap.class));
     }
 }
diff --git 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/util/ReflectionUtils.java
 
b/test/util/src/main/java/org/apache/shardingsphere/elasticjob/test/util/ReflectionUtils.java
similarity index 61%
rename from 
kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/util/ReflectionUtils.java
rename to 
test/util/src/main/java/org/apache/shardingsphere/elasticjob/test/util/ReflectionUtils.java
index cc93be2be..68e9e07d0 100644
--- 
a/kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/util/ReflectionUtils.java
+++ 
b/test/util/src/main/java/org/apache/shardingsphere/elasticjob/test/util/ReflectionUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.elasticjob.kernel.util;
+package org.apache.shardingsphere.elasticjob.test.util;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -29,6 +29,25 @@ import java.lang.reflect.Field;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class ReflectionUtils {
     
+    /**
+     * Get field value.
+     *
+     * @param target target object
+     * @param fieldName field name
+     * @return field value
+     */
+    @SneakyThrows(ReflectiveOperationException.class)
+    public static Object getFieldValue(final Object target, final String 
fieldName) {
+        Field field = target.getClass().getDeclaredField(fieldName);
+        boolean originAccessible = field.isAccessible();
+        if (!originAccessible) {
+            field.setAccessible(true);
+        }
+        Object result = field.get(target);
+        field.setAccessible(originAccessible);
+        return result;
+    }
+    
     /**
      * Set field value.
      *
@@ -36,11 +55,15 @@ public final class ReflectionUtils {
      * @param fieldName field name
      * @param fieldValue field value
      */
-    @SneakyThrows
+    @SneakyThrows(ReflectiveOperationException.class)
     public static void setFieldValue(final Object target, final String 
fieldName, final Object fieldValue) {
         Field field = target.getClass().getDeclaredField(fieldName);
-        field.setAccessible(true);
+        boolean originAccessible = field.isAccessible();
+        if (!originAccessible) {
+            field.setAccessible(true);
+        }
         field.set(target, fieldValue);
+        field.setAccessible(originAccessible);
     }
     
     /**
@@ -50,10 +73,14 @@ public final class ReflectionUtils {
      * @param fieldName field name
      * @param fieldValue field value
      */
-    @SneakyThrows
+    @SneakyThrows(ReflectiveOperationException.class)
     public static void setSuperclassFieldValue(final Object target, final 
String fieldName, final Object fieldValue) {
         Field field = 
target.getClass().getSuperclass().getDeclaredField(fieldName);
-        field.setAccessible(true);
+        boolean originAccessible = field.isAccessible();
+        if (!originAccessible) {
+            field.setAccessible(true);
+        }
         field.set(target, fieldValue);
+        field.setAccessible(originAccessible);
     }
 }


Reply via email to