You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/02/28 12:16:39 UTC

[shardingsphere] branch master updated: Use AutoMockExtension on mode modules (#24387)

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.git


The following commit(s) were added to refs/heads/master by this push:
     new 3a70d6665ff Use AutoMockExtension on mode modules (#24387)
3a70d6665ff is described below

commit 3a70d6665ffa5ccbd2a908a51fb89f34bcc572db
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Feb 28 20:16:27 2023 +0800

    Use AutoMockExtension on mode modules (#24387)
---
 jdbc/core/pom.xml                                  |  2 +-
 .../mode/metadata/MetaDataContextsFactoryTest.java | 66 ++++++----------------
 .../ProcessStandaloneSubscriberTest.java           | 43 ++++----------
 test/it/pipeline/pom.xml                           |  2 +-
 4 files changed, 28 insertions(+), 85 deletions(-)

diff --git a/jdbc/core/pom.xml b/jdbc/core/pom.xml
index 4ba76c8a7da..a6bee6ec7b4 100644
--- a/jdbc/core/pom.xml
+++ b/jdbc/core/pom.xml
@@ -175,7 +175,7 @@
             <artifactId>shardingsphere-logging-core</artifactId>
             <version>${project.version}</version>
         </dependency>
-
+        
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-test-util</artifactId>
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
index 27959bc9cf8..9444863bd2c 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactoryTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -34,37 +33,36 @@ import org.apache.shardingsphere.mode.metadata.persist.service.config.global.Pro
 import org.apache.shardingsphere.test.fixture.infra.rule.MockedRule;
 import org.apache.shardingsphere.test.fixture.infra.rule.MockedRuleConfiguration;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.shardingsphere.test.mock.AutoMockExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
 
 import java.sql.SQLException;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Map;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyCollection;
 import static org.mockito.Mockito.anyMap;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(AutoMockExtension.class)
+@StaticMockSettings({ShardingSphereDatabasesFactory.class, GlobalRulesBuilder.class})
+@MockitoSettings(strictness = Strictness.LENIENT)
 public final class MetaDataContextsFactoryTest {
     
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -73,24 +71,8 @@ public final class MetaDataContextsFactoryTest {
     @Mock
     private DatabaseMetaDataPersistService databaseMetaDataPersistService;
     
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private ShardingSphereDatabase database;
-    
-    @Mock
-    private JDBCInstanceMetaData jdbcInstanceMetaData;
-    
-    private final Collection<ShardingSphereRule> rules = new LinkedList<>();
-    
-    private final Map<String, ShardingSphereDatabase> databases = new HashMap<>();
-    
-    private MockedStatic<ShardingSphereDatabasesFactory> databasesFactory;
-    
-    private MockedStatic<GlobalRulesBuilder> globalRulesBuilder;
-    
-    @Before
-    public void setUp() {
-        rules.add(new MockedRule());
-        databases.put("foo_db", database);
+    @BeforeEach
+    public void setUp() throws SQLException {
         when(metaDataPersistService.getEffectiveDataSources(eq("foo_db"), anyMap())).thenReturn(Collections.singletonMap("foo_ds", new MockedDataSource()));
         DatabaseRulePersistService databaseRulePersistService = mockDatabaseRulePersistService();
         when(metaDataPersistService.getDatabaseRulePersistService()).thenReturn(databaseRulePersistService);
@@ -100,18 +82,8 @@ public final class MetaDataContextsFactoryTest {
         when(propertiesPersistService.load()).thenReturn(new Properties());
         when(metaDataPersistService.getPropsService()).thenReturn(propertiesPersistService);
         when(metaDataPersistService.getDatabaseMetaDataService()).thenReturn(databaseMetaDataPersistService);
-        mockDatabasesFactory();
-        mockGlobalRulesBuilder();
-    }
-    
-    private void mockDatabasesFactory() {
-        databasesFactory = mockStatic(ShardingSphereDatabasesFactory.class);
-        databasesFactory.when(() -> ShardingSphereDatabasesFactory.create(anyMap(), any(), any())).thenReturn(databases);
-    }
-    
-    private void mockGlobalRulesBuilder() {
-        globalRulesBuilder = mockStatic(GlobalRulesBuilder.class);
-        globalRulesBuilder.when(() -> GlobalRulesBuilder.buildRules(anyCollection(), anyMap(), any(ConfigurationProperties.class))).thenReturn(rules);
+        when(ShardingSphereDatabasesFactory.create(anyMap(), any(), any())).thenReturn(new HashMap<>(Collections.singletonMap("foo_db", mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS))));
+        when(GlobalRulesBuilder.buildRules(anyCollection(), anyMap(), any(ConfigurationProperties.class))).thenReturn(Collections.singleton(new MockedRule()));
     }
     
     private DatabaseRulePersistService mockDatabaseRulePersistService() {
@@ -129,7 +101,7 @@ public final class MetaDataContextsFactoryTest {
     @Test
     public void assertCreateWithJDBCInstanceMetaData() throws SQLException {
         InstanceContext instanceContext = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
-        when(instanceContext.getInstance().getMetaData()).thenReturn(jdbcInstanceMetaData);
+        when(instanceContext.getInstance().getMetaData()).thenReturn(mock(JDBCInstanceMetaData.class));
         try (MetaDataContexts actual = MetaDataContextsFactory.create(metaDataPersistService, createContextManagerBuilderParameter(), instanceContext)) {
             assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().size(), is(1));
             assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().iterator().next(), instanceOf(MockedRule.class));
@@ -155,10 +127,4 @@ public final class MetaDataContextsFactoryTest {
         return new ContextManagerBuilderParameter(null,
                 Collections.singletonMap("foo_db", mock(DataSourceGeneratedDatabaseConfiguration.class)), Collections.emptyList(), new Properties(), Collections.emptyList(), null, false);
     }
-    
-    @After
-    public void tearDown() {
-        databasesFactory.close();
-        globalRulesBuilder.close();
-    }
 }
diff --git a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/subscriber/ProcessStandaloneSubscriberTest.java b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/subscriber/ProcessStandaloneSubscriberTest.java
index b10af07b7e7..10d4fe83a88 100644
--- a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/subscriber/ProcessStandaloneSubscriberTest.java
+++ b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/subscriber/ProcessStandaloneSubscriberTest.java
@@ -20,47 +20,24 @@ package org.apache.shardingsphere.mode.manager.standalone.subscriber;
 import org.apache.shardingsphere.infra.executor.sql.process.ShowProcessListManager;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.process.event.ShowProcessListRequestEvent;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.MockedStatic;
-
-import java.util.Collections;
+import org.apache.shardingsphere.test.mock.AutoMockExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(AutoMockExtension.class)
+@StaticMockSettings(ShowProcessListManager.class)
 public final class ProcessStandaloneSubscriberTest {
     
-    private final EventBusContext eventBusContext = new EventBusContext();
-    
-    private ProcessStandaloneSubscriber processRegistrySubscriber;
-    
-    private ShowProcessListManager showProcessListManager;
-    
-    private MockedStatic<ShowProcessListManager> mockedStatic;
-    
-    @Before
-    public void setUp() {
-        processRegistrySubscriber = new ProcessStandaloneSubscriber(eventBusContext);
-        mockedStatic = mockStatic(ShowProcessListManager.class);
-        showProcessListManager = mock(ShowProcessListManager.class);
-        mockedStatic.when(ShowProcessListManager::getInstance).thenReturn(showProcessListManager);
-    }
-    
     @Test
     public void assertLoadShowProcessListData() {
-        ShowProcessListRequestEvent showProcessListRequestEvent = mock(ShowProcessListRequestEvent.class);
-        when(showProcessListManager.getProcessContexts()).thenReturn(Collections.emptyMap());
-        processRegistrySubscriber.loadShowProcessListData(showProcessListRequestEvent);
-        verify(showProcessListManager, times(1)).getProcessContexts();
-    }
-    
-    @After
-    public void tearDown() {
-        mockedStatic.close();
+        ShowProcessListManager showProcessListManager = mock(ShowProcessListManager.class);
+        when(ShowProcessListManager.getInstance()).thenReturn(showProcessListManager);
+        new ProcessStandaloneSubscriber(new EventBusContext()).loadShowProcessListData(mock(ShowProcessListRequestEvent.class));
+        verify(showProcessListManager).getProcessContexts();
     }
 }
diff --git a/test/it/pipeline/pom.xml b/test/it/pipeline/pom.xml
index f03a701db3b..3c94d9eb257 100644
--- a/test/it/pipeline/pom.xml
+++ b/test/it/pipeline/pom.xml
@@ -68,7 +68,7 @@
             <artifactId>shardingsphere-cluster-mode-repository-zookeeper</artifactId>
             <version>${project.version}</version>
         </dependency>
-
+        
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-test-util</artifactId>