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

yixia pushed a commit to branch 2.3.0
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git


The following commit(s) were added to refs/heads/2.3.0 by this push:
     new 06b809eadb optimize: fix tm context conflict ut (#7083)
06b809eadb is described below

commit 06b809eadb260007de38073110ee16035ab6516a
Author: wt_better <[email protected]>
AuthorDate: Sat Dec 28 16:21:16 2024 +0800

    optimize: fix tm context conflict ut (#7083)
---
 .../rm/tcc/interceptor/ProxyUtilsTccTest.java      | 142 +++++++-------
 .../parser/TccActionInterceptorParserTest.java     | 169 +++++++----------
 .../parser/ProxyUtilsGlobalTransactionalTest.java  |  35 ++--
 .../rm/tcc/interceptor/ProxyUtilsTccTest.java      | 147 +++++++--------
 .../parser/TccActionInterceptorParserTest.java     | 210 ++++++++-------------
 .../parser/SagaActionInterceptorParserTest.java    | 173 ++++++++---------
 .../seata/tm/TransactionManagerHolderTest.java     |  26 ++-
 .../test/java/org/apache/seata/tm/api/APITest.java |  11 +-
 .../seata/tm/api/DefaultGlobalTransactionTest.java |  26 ++-
 .../seata/tm/api/GlobalTransactionContextTest.java |  17 +-
 10 files changed, 450 insertions(+), 506 deletions(-)

diff --git 
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java 
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
index 254f7b043e..02c7e7d910 100644
--- 
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
+++ 
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
@@ -19,6 +19,8 @@ package io.seata.rm.tcc.interceptor;
 import io.seata.core.context.RootContext;
 import io.seata.rm.tcc.NormalTccActionImpl;
 import io.seata.rm.tcc.TccParam;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
@@ -27,7 +29,9 @@ import org.apache.seata.core.model.Resource;
 import org.apache.seata.core.model.ResourceManager;
 import org.apache.seata.integration.tx.api.util.ProxyUtil;
 import org.apache.seata.rm.DefaultResourceManager;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
@@ -37,113 +41,105 @@ import java.util.concurrent.atomic.AtomicReference;
 
 public class ProxyUtilsTccTest {
 
-    private final String DEFAULT_XID = "default_xid";
+    private ResourceManager backResourceManager;
 
-    private final AtomicReference<String> branchReference = new 
AtomicReference<String>();
+    private final AtomicReference<String> branchReference = new 
AtomicReference<>();
 
+    @BeforeEach
+    public void beforeEach() {
+        RootContext.bind(XID.generateXID(UUIDGenerator.generateUUID()));
+        ResourceManager resourceManager = new ResourceManager() {
 
-    private final ResourceManager resourceManager = new ResourceManager() {
+            @Override
+            public Long branchRegister(BranchType branchType, String 
resourceId, String clientId, String xid, String applicationData, String 
lockKeys) throws TransactionException {
+                branchReference.set(resourceId);
+                return System.currentTimeMillis();
+            }
 
-        @Override
-        public Long branchRegister(BranchType branchType, String resourceId, 
String clientId, String xid, String applicationData, String lockKeys) throws 
TransactionException {
-            branchReference.set(resourceId);
-            return System.currentTimeMillis();
-        }
+            @Override
+            public void branchReport(BranchType branchType, String xid, long 
branchId, BranchStatus status, String applicationData) throws 
TransactionException {
 
-        @Override
-        public void branchReport(BranchType branchType, String xid, long 
branchId, BranchStatus status, String applicationData) throws 
TransactionException {
+            }
 
-        }
+            @Override
+            public boolean lockQuery(BranchType branchType, String resourceId, 
String xid, String lockKeys) throws TransactionException {
+                return false;
+            }
 
-        @Override
-        public boolean lockQuery(BranchType branchType, String resourceId, 
String xid, String lockKeys) throws TransactionException {
-            return false;
-        }
+            @Override
+            public BranchStatus branchCommit(BranchType branchType, String 
xid, long branchId, String resourceId, String applicationData) throws 
TransactionException {
+                return null;
+            }
 
-        @Override
-        public BranchStatus branchCommit(BranchType branchType, String xid, 
long branchId, String resourceId, String applicationData) throws 
TransactionException {
-            return null;
-        }
+            @Override
+            public BranchStatus branchRollback(BranchType branchType, String 
xid, long branchId, String resourceId, String applicationData) throws 
TransactionException {
+                return null;
+            }
 
-        @Override
-        public BranchStatus branchRollback(BranchType branchType, String xid, 
long branchId, String resourceId, String applicationData) throws 
TransactionException {
-            return null;
-        }
+            @Override
+            public void registerResource(Resource resource) {
 
-        @Override
-        public void registerResource(Resource resource) {
+            }
 
-        }
+            @Override
+            public void unregisterResource(Resource resource) {
 
-        @Override
-        public void unregisterResource(Resource resource) {
+            }
 
-        }
+            @Override
+            public Map<String, Resource> getManagedResources() {
+                return null;
+            }
 
-        @Override
-        public Map<String, Resource> getManagedResources() {
-            return null;
-        }
+            @Override
+            public BranchType getBranchType() {
+                return null;
+            }
 
-        @Override
-        public BranchType getBranchType() {
-            return null;
-        }
+            @Override
+            public GlobalStatus getGlobalStatus(BranchType branchType, String 
xid) {
+                return null;
+            }
 
-        @Override
-        public GlobalStatus getGlobalStatus(BranchType branchType, String xid) 
{
-            return null;
-        }
 
+        };
+        backResourceManager = 
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+    }
 
-    };
 
-    private final NormalTccActionImpl tccActionProxy= 
ProxyUtil.createProxy(new NormalTccActionImpl());
+    @AfterEach
+    public void afterEach() {
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
backResourceManager);
+        RootContext.unbind();
+    }
 
 
     @Test
     public void testTcc() {
-        try {
-            //given
-            RootContext.bind(DEFAULT_XID);
-
-            TccParam tccParam = new TccParam(1, "[email protected]");
-            List<String> listB = Collections.singletonList("b");
+        TccParam tccParam = new TccParam(1, "[email protected]");
+        List<String> listB = Collections.singletonList("b");
 
-            DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
+        String result = tccActionProxy.prepare(null, 0, listB, tccParam);
 
-            String result = tccActionProxy.prepare(null, 0, listB, tccParam);
-
-            //then
-            Assertions.assertEquals("a", result);
-            Assertions.assertNotNull(result);
-            Assertions.assertEquals("tccActionForCompatibleTest", 
branchReference.get());
-        } finally {
-            RootContext.unbind();
-        }
+        Assertions.assertEquals("a", result);
+        Assertions.assertNotNull(result);
+        Assertions.assertEquals("tccActionForCompatibleTest", 
branchReference.get());
     }
 
     @Test
     public void testTccThrowRawException() {
-        try {
-            //given
-            RootContext.bind(DEFAULT_XID);
-
-            TccParam tccParam = new TccParam(1, "[email protected]");
-            List<String> listB = Collections.singletonList("b");
-
-            DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+        TccParam tccParam = new TccParam(1, "[email protected]");
+        List<String> listB = Collections.singletonList("b");
 
-            //when
-            //then
-            Assertions.assertThrows(IllegalArgumentException.class, () -> 
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
-        } finally {
-            RootContext.unbind();
-        }
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
+        Assertions.assertThrows(IllegalArgumentException.class, () -> 
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
     }
 
     @Test
     public void testTccImplementOtherMethod() {
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
         Assertions.assertTrue(tccActionProxy.otherMethod());
     }
 
diff --git 
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
 
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
index 2bfcdbe877..1c37267c3f 100644
--- 
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
+++ 
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
@@ -16,14 +16,6 @@
  */
 package io.seata.rm.tcc.interceptor.parser;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
-import io.seata.core.context.RootContext;
 import io.seata.rm.tcc.BranchSessionMock;
 import io.seata.rm.tcc.NestTccAction;
 import io.seata.rm.tcc.NestTccActionImpl;
@@ -32,6 +24,8 @@ import io.seata.rm.tcc.TccAction;
 import io.seata.rm.tcc.TccActionImpl;
 import io.seata.tm.api.GlobalTransaction;
 import io.seata.tm.api.GlobalTransactionContext;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
@@ -43,27 +37,30 @@ import org.apache.seata.integration.tx.api.util.ProxyUtil;
 import org.apache.seata.rm.DefaultResourceManager;
 import org.apache.seata.rm.tcc.TCCResourceManager;
 import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 
 class TccActionInterceptorParserTest {
 
-    private static ResourceManager resourceManager;
-
-    @BeforeAll
-    public static void init() throws IOException {
-        System.setProperty("config.type", "file");
-        System.setProperty("config.file.name", "file.conf");
-        System.setProperty("txServiceGroup", "default_tx_group");
-        System.setProperty("service.vgroupMapping.default_tx_group", 
"default");
-    }
+    private ResourceManager backResourceManager;
+    private TransactionManager backTransactionManager;
 
     @BeforeEach
-    public void before() {
-        resourceManager = new TCCResourceManager() {
+    public void beforeEach() {
+        backResourceManager = 
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+        backTransactionManager = TransactionManagerHolder.get();
+
+        Map<String, List<BranchSessionMock>> applicationDataMap = new 
ConcurrentHashMap<>();
+
+        ResourceManager mockResourceManager = new TCCResourceManager() {
 
             @Override
             public Long branchRegister(BranchType branchType, String 
resourceId, String clientId, String xid, String applicationData, String 
lockKeys) throws TransactionException {
@@ -83,12 +80,53 @@ class TccActionInterceptorParserTest {
                 return branchId;
             }
         };
-        RootContext.unbind();
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
-        TransactionManagerHolder.set(transactionManager);
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
mockResourceManager);
+
+        TransactionManager mockTransactionManager = new TransactionManager() {
+            @Override
+            public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
+                return XID.generateXID(UUIDGenerator.generateUUID());
+            }
+
+            @Override
+            public GlobalStatus commit(String xid) throws TransactionException 
{
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                for (BranchSessionMock branch : branches) {
+                    mockResourceManager.branchCommit(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
+                }
+                return GlobalStatus.Committed;
+            }
+
+            @Override
+            public GlobalStatus rollback(String xid) throws 
TransactionException {
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                for (BranchSessionMock branch : branches) {
+                    mockResourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
+                }
+
+                return GlobalStatus.Rollbacked;
+            }
+
+            @Override
+            public GlobalStatus getStatus(String xid) throws 
TransactionException {
+                return GlobalStatus.Begin;
+            }
+
+            @Override
+            public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
+                return globalStatus;
+            }
+        };
+        TransactionManagerHolder.set(mockTransactionManager);
+    }
+
+    @AfterEach
+    public void afterEach() {
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
backResourceManager);
+        TransactionManagerHolder.set(backTransactionManager);
     }
 
+
     @Test
     void parserInterfaceToProxy() {
 
@@ -139,11 +177,7 @@ class TccActionInterceptorParserTest {
 
             Assertions.assertTrue(result);
 
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.commit();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -159,7 +193,7 @@ class TccActionInterceptorParserTest {
     public void testNestTcc_should_rollback() throws Exception {
 
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction, 
"oldtccAction");
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction, 
"oldtccAction");
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -188,11 +222,7 @@ class TccActionInterceptorParserTest {
 
             Assertions.assertFalse(result);
 
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.rollback();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -208,7 +238,7 @@ class TccActionInterceptorParserTest {
     public void testNestTcc_required_new_should_rollback_commit() throws 
Exception {
 
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction, 
"oldtccAction");
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction, 
"oldtccAction");
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -236,11 +266,7 @@ class TccActionInterceptorParserTest {
 
             Assertions.assertFalse(result);
 
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.rollback();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -252,12 +278,11 @@ class TccActionInterceptorParserTest {
     }
 
 
-
     @Test
     public void testNestTcc_required_new_should_both_commit() throws Exception 
{
 
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction, 
"oldtccAction");
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction, 
"oldtccAction");
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -285,11 +310,7 @@ class TccActionInterceptorParserTest {
 
             Assertions.assertTrue(result);
 
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.commit();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -300,56 +321,4 @@ class TccActionInterceptorParserTest {
 
     }
 
-
-
-    private static Map<String, List<BranchSessionMock>> applicationDataMap = 
new ConcurrentHashMap<>();
-
-
-    private static TransactionManager transactionManager = new 
TransactionManager() {
-        @Override
-        public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
-            return UUID.randomUUID().toString();
-        }
-
-        @Override
-        public GlobalStatus commit(String xid) throws TransactionException {
-            commitAll(xid);
-            return GlobalStatus.Committed;
-        }
-
-        @Override
-        public GlobalStatus rollback(String xid) throws TransactionException {
-
-            rollbackAll(xid);
-
-            return GlobalStatus.Rollbacked;
-        }
-
-        @Override
-        public GlobalStatus getStatus(String xid) throws TransactionException {
-            return GlobalStatus.Begin;
-        }
-
-        @Override
-        public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
-            return globalStatus;
-        }
-    };
-
-
-    public static void commitAll(String xid) throws TransactionException {
-
-        List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-        for (BranchSessionMock branch : branches) {
-            resourceManager.branchCommit(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
-        }
-    }
-
-    public static void rollbackAll(String xid) throws TransactionException {
-
-        List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-        for (BranchSessionMock branch : branches) {
-            resourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
-        }
-    }
 }
diff --git 
a/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
 
b/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
index 4d5c42dba9..2debd51010 100644
--- 
a/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
+++ 
b/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
@@ -16,31 +16,30 @@
  */
 package org.apache.seata.integration.tx.api.interceptor.parser;
 
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.TransactionManager;
 import org.apache.seata.integration.tx.api.util.ProxyUtil;
 import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 
 public class ProxyUtilsGlobalTransactionalTest {
 
-    private final String DEFAULT_XID = "default_xid";
-
-
-    @Test
-    public void testTcc() {
-        //given
-        BusinessImpl business = new BusinessImpl();
-
-        Business businessProxy = ProxyUtil.createProxy(business);
+    private static TransactionManager bakTransactionManager;
 
+    @BeforeAll
+    public static void beforeAll() {
+        bakTransactionManager = TransactionManagerHolder.get();
         TransactionManager mockTransactionManager = new TransactionManager() {
             @Override
             public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
-                return DEFAULT_XID;
+                return XID.generateXID(UUIDGenerator.generateUUID());
             }
 
             @Override
@@ -65,13 +64,23 @@ public class ProxyUtilsGlobalTransactionalTest {
         };
 
         TransactionManagerHolder.set(mockTransactionManager);
+    }
+
+    @AfterAll
+    public static void afterAll() {
+        TransactionManagerHolder.set(bakTransactionManager);
+    }
+
+
+    @Test
+    public void testTcc() {
+        BusinessImpl business = new BusinessImpl();
+
+        Business businessProxy = ProxyUtil.createProxy(business);
 
-        //when
         String result = businessProxy.doBiz("test");
 
-        //then
         Assertions.assertNotNull(result);
-
     }
 
 
diff --git 
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java 
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
index 277feb37cd..1826f3ebcb 100644
--- 
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
+++ 
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.seata.rm.tcc.interceptor;
 
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.context.RootContext;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchStatus;
@@ -27,10 +29,12 @@ import org.apache.seata.integration.tx.api.util.ProxyUtil;
 import org.apache.seata.rm.DefaultResourceManager;
 import org.apache.seata.rm.tcc.NormalTccActionImpl;
 import org.apache.seata.rm.tcc.TccParam;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
@@ -38,114 +42,105 @@ import java.util.concurrent.atomic.AtomicReference;
 
 public class ProxyUtilsTccTest {
 
-    private final String DEFAULT_XID = "default_xid";
+    private ResourceManager backResourceManager;
 
-    AtomicReference<String> branchReference = new AtomicReference<>();
+    private final AtomicReference<String> branchReference = new 
AtomicReference<>();
 
+    @BeforeEach
+    public void beforeEach() {
+        RootContext.bind(XID.generateXID(UUIDGenerator.generateUUID()));
+        ResourceManager resourceManager = new ResourceManager() {
 
-    ResourceManager resourceManager = new ResourceManager() {
+            @Override
+            public Long branchRegister(BranchType branchType, String 
resourceId, String clientId, String xid, String applicationData, String 
lockKeys) throws TransactionException {
+                branchReference.set(resourceId);
+                return System.currentTimeMillis();
+            }
 
-        @Override
-        public Long branchRegister(BranchType branchType, String resourceId, 
String clientId, String xid, String applicationData, String lockKeys) throws 
TransactionException {
-            branchReference.set(resourceId);
-            return System.currentTimeMillis();
-        }
+            @Override
+            public void branchReport(BranchType branchType, String xid, long 
branchId, BranchStatus status, String applicationData) throws 
TransactionException {
 
-        @Override
-        public void branchReport(BranchType branchType, String xid, long 
branchId, BranchStatus status, String applicationData) throws 
TransactionException {
+            }
 
-        }
+            @Override
+            public boolean lockQuery(BranchType branchType, String resourceId, 
String xid, String lockKeys) throws TransactionException {
+                return false;
+            }
 
-        @Override
-        public boolean lockQuery(BranchType branchType, String resourceId, 
String xid, String lockKeys) throws TransactionException {
-            return false;
-        }
+            @Override
+            public BranchStatus branchCommit(BranchType branchType, String 
xid, long branchId, String resourceId, String applicationData) throws 
TransactionException {
+                return null;
+            }
 
-        @Override
-        public BranchStatus branchCommit(BranchType branchType, String xid, 
long branchId, String resourceId, String applicationData) throws 
TransactionException {
-            return null;
-        }
+            @Override
+            public BranchStatus branchRollback(BranchType branchType, String 
xid, long branchId, String resourceId, String applicationData) throws 
TransactionException {
+                return null;
+            }
 
-        @Override
-        public BranchStatus branchRollback(BranchType branchType, String xid, 
long branchId, String resourceId, String applicationData) throws 
TransactionException {
-            return null;
-        }
+            @Override
+            public void registerResource(Resource resource) {
 
-        @Override
-        public void registerResource(Resource resource) {
+            }
 
-        }
+            @Override
+            public void unregisterResource(Resource resource) {
 
-        @Override
-        public void unregisterResource(Resource resource) {
+            }
 
-        }
+            @Override
+            public Map<String, Resource> getManagedResources() {
+                return null;
+            }
 
-        @Override
-        public Map<String, Resource> getManagedResources() {
-            return null;
-        }
+            @Override
+            public BranchType getBranchType() {
+                return null;
+            }
 
-        @Override
-        public BranchType getBranchType() {
-            return null;
-        }
+            @Override
+            public GlobalStatus getGlobalStatus(BranchType branchType, String 
xid) {
+                return null;
+            }
 
-        @Override
-        public GlobalStatus getGlobalStatus(BranchType branchType, String xid) 
{
-            return null;
-        }
 
+        };
+        backResourceManager = 
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+    }
 
-    };
 
-    private final NormalTccActionImpl tccActionProxy= 
ProxyUtil.createProxy(new NormalTccActionImpl());
+    @AfterEach
+    public void afterEach() {
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
backResourceManager);
+        RootContext.unbind();
+    }
 
 
     @Test
     public void testTcc() {
-        try {
-            //given
-            RootContext.bind(DEFAULT_XID);
-
-            TccParam tccParam = new TccParam(1, "[email protected]");
-            List<String> listB = Arrays.asList("b");
+        TccParam tccParam = new TccParam(1, "[email protected]");
+        List<String> listB = Collections.singletonList("b");
 
-            DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
+        String result = tccActionProxy.prepare(null, 0, listB, tccParam);
 
-            //when
-            String result = tccActionProxy.prepare(null, 0, listB, tccParam);
-
-            //then
-            Assertions.assertEquals("a", result);
-            Assertions.assertNotNull(result);
-            Assertions.assertEquals("normalTccActionForTest", 
branchReference.get());
-        } finally {
-            RootContext.unbind();
-        }
+        Assertions.assertEquals("a", result);
+        Assertions.assertNotNull(result);
+        Assertions.assertEquals("normalTccActionForTest", 
branchReference.get());
     }
 
     @Test
     public void testTccThrowRawException() {
-        try {
-            //given
-            RootContext.bind(DEFAULT_XID);
-
-            TccParam tccParam = new TccParam(1, "[email protected]");
-            List<String> listB = Arrays.asList("b");
-
-            DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
+        TccParam tccParam = new TccParam(1, "[email protected]");
+        List<String> listB = Collections.singletonList("b");
 
-            //when
-            //then
-            Assertions.assertThrows(IllegalArgumentException.class, () -> 
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
-        } finally {
-            RootContext.unbind();
-        }
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
+        Assertions.assertThrows(IllegalArgumentException.class, () -> 
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
     }
 
     @Test
-    public void testTccImplementOtherMethod(){
+    public void testTccImplementOtherMethod() {
+        NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new 
NormalTccActionImpl());
         Assertions.assertTrue(tccActionProxy.otherMethod());
     }
 
diff --git 
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
 
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
index 867b9c2de9..cc8a255e4a 100644
--- 
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
+++ 
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
@@ -16,14 +16,8 @@
  */
 package org.apache.seata.rm.tcc.interceptor.parser;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.seata.core.context.RootContext;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
@@ -45,28 +39,95 @@ import org.apache.seata.tm.api.GlobalTransaction;
 import org.apache.seata.tm.api.GlobalTransactionContext;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 
 class TccActionInterceptorParserTest {
 
-    @BeforeAll
-    public static void init() throws IOException {
-        System.setProperty("config.type", "file");
-        System.setProperty("config.file.name", "file.conf");
-        System.setProperty("txServiceGroup", "default_tx_group");
-        System.setProperty("service.vgroupMapping.default_tx_group", 
"default");
+    private ResourceManager backResourceManager;
+    private TransactionManager backTransactionManager;
+
+    @BeforeEach
+    public void beforeEach() {
+        backResourceManager = 
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+        backTransactionManager = TransactionManagerHolder.get();
+        Map<String, List<BranchSessionMock>> applicationDataMap = new 
ConcurrentHashMap<>();
+
+        ResourceManager mockResourceManager = new TCCResourceManager() {
+
+            @Override
+            public Long branchRegister(BranchType branchType, String 
resourceId, String clientId, String xid, String applicationData, String 
lockKeys) throws TransactionException {
+
+                long branchId = System.currentTimeMillis();
+
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                BranchSessionMock branchSessionMock = new BranchSessionMock();
+                branchSessionMock.setXid(xid);
+                branchSessionMock.setBranchType(branchType);
+                branchSessionMock.setResourceId(resourceId);
+                branchSessionMock.setApplicationData(applicationData);
+                branchSessionMock.setBranchId(branchId);
+
+                branches.add(branchSessionMock);
+
+                return branchId;
+            }
+        };
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
mockResourceManager);
+
+        TransactionManager mockTransactionManager = new TransactionManager() {
+            @Override
+            public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
+                return XID.generateXID(UUIDGenerator.generateUUID());
+            }
+
+            @Override
+            public GlobalStatus commit(String xid) throws TransactionException 
{
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                for (BranchSessionMock branch : branches) {
+                    mockResourceManager.branchCommit(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
+                }
+                return GlobalStatus.Committed;
+            }
+
+            @Override
+            public GlobalStatus rollback(String xid) throws 
TransactionException {
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                for (BranchSessionMock branch : branches) {
+                    mockResourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
+                }
+
+                return GlobalStatus.Rollbacked;
+            }
+
+            @Override
+            public GlobalStatus getStatus(String xid) throws 
TransactionException {
+                return GlobalStatus.Begin;
+            }
+
+            @Override
+            public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
+                return globalStatus;
+            }
+        };
+        TransactionManagerHolder.set(mockTransactionManager);
     }
 
     @AfterEach
-    public void clearTccResource(){
-        resourceManager.getManagedResources().clear();
+    public void afterEach() {
+        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
backResourceManager);
+        TransactionManagerHolder.set(backTransactionManager);
     }
 
+
     @Test
     void parserInterfaceToProxy() {
-
         //given
         TccActionInterceptorParser tccActionInterceptorParser = new 
TccActionInterceptorParser();
         NormalTccActionImpl tccAction = new NormalTccActionImpl();
@@ -76,21 +137,13 @@ class TccActionInterceptorParserTest {
 
         //then
         Assertions.assertNotNull(proxyInvocationHandler);
-
     }
 
 
     @Test
     public void testNestTcc_should_commit() throws Exception {
-        //given
-        RootContext.unbind();
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction);
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -137,15 +190,8 @@ class TccActionInterceptorParserTest {
 
     @Test
     public void testNestTcc_should_rollback() throws Exception {
-        //given
-        RootContext.unbind();
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction);
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -186,21 +232,13 @@ class TccActionInterceptorParserTest {
 
         Assertions.assertFalse(nestTccAction.isCommit());
         Assertions.assertFalse(tccAction.isCommit());
-
     }
 
 
     @Test
     public void testNestTcc_required_new_should_rollback_commit() throws 
Exception {
-        //given
-        RootContext.unbind();
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction);
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -244,18 +282,10 @@ class TccActionInterceptorParserTest {
     }
 
 
-
     @Test
     public void testNestTcc_required_new_should_both_commit() throws Exception 
{
-        //given
-        RootContext.unbind();
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.TCC, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         TccActionImpl tccAction = new TccActionImpl();
-        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction);
+        TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
         Assertions.assertNotNull(tccActionProxy);
 
         NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -298,78 +328,4 @@ class TccActionInterceptorParserTest {
 
     }
 
-
-
-    private static Map<String, List<BranchSessionMock>> applicationDataMap = 
new ConcurrentHashMap<>();
-
-
-    private static TransactionManager transactionManager = new 
TransactionManager() {
-        @Override
-        public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
-            return UUID.randomUUID().toString();
-        }
-
-        @Override
-        public GlobalStatus commit(String xid) throws TransactionException {
-            commitAll(xid);
-            return GlobalStatus.Committed;
-        }
-
-        @Override
-        public GlobalStatus rollback(String xid) throws TransactionException {
-
-            rollbackAll(xid);
-
-            return GlobalStatus.Rollbacked;
-        }
-
-        @Override
-        public GlobalStatus getStatus(String xid) throws TransactionException {
-            return GlobalStatus.Begin;
-        }
-
-        @Override
-        public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
-            return globalStatus;
-        }
-    };
-
-
-    private static ResourceManager resourceManager = new TCCResourceManager() {
-
-        @Override
-        public Long branchRegister(BranchType branchType, String resourceId, 
String clientId, String xid, String applicationData, String lockKeys) throws 
TransactionException {
-
-            long branchId = System.currentTimeMillis();
-
-            List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-            BranchSessionMock branchSessionMock = new BranchSessionMock();
-            branchSessionMock.setXid(xid);
-            branchSessionMock.setBranchType(branchType);
-            branchSessionMock.setResourceId(resourceId);
-            branchSessionMock.setApplicationData(applicationData);
-            branchSessionMock.setBranchId(branchId);
-
-            branches.add(branchSessionMock);
-
-            return branchId;
-        }
-    };
-
-    public static void commitAll(String xid) throws TransactionException {
-
-        List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-        for (BranchSessionMock branch : branches) {
-            resourceManager.branchCommit(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
-        }
-    }
-
-    public static void rollbackAll(String xid) throws TransactionException {
-
-        List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-        for (BranchSessionMock branch : branches) {
-            resourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
-        }
-    }
-
 }
diff --git 
a/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
 
b/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
index ca6f2317da..eb588670e3 100644
--- 
a/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
+++ 
b/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.seata.saga.annotation.rm.interceptor.parser;
 
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.model.GlobalStatus;
@@ -34,34 +36,89 @@ import org.apache.seata.tm.api.GlobalTransaction;
 import org.apache.seata.tm.api.GlobalTransactionContext;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- *
+ * Saga Action InterceptorParser Test
  */
 public class SagaActionInterceptorParserTest {
 
-    public static String DEFAULT_XID = "default_xid";
+    private ResourceManager backResourceManager;
+    private TransactionManager backTransactionManager;
+
+    @BeforeEach
+    public void beforeEach() {
+        backTransactionManager = TransactionManagerHolder.get();
+        backResourceManager = 
DefaultResourceManager.get().getResourceManager(BranchType.SAGA_ANNOTATION);
+
+        Map<String, List<BranchSessionMock>> applicationDataMap = new 
ConcurrentHashMap<>();
+        ResourceManager mockResourceManager = new 
SagaAnnotationResourceManager() {
+
+            @Override
+            public Long branchRegister(BranchType branchType, String 
resourceId, String clientId, String xid, String applicationData, String 
lockKeys) throws TransactionException {
+
+                long branchId = System.currentTimeMillis();
+
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                BranchSessionMock branchSessionMock = new BranchSessionMock();
+                branchSessionMock.setXid(xid);
+                branchSessionMock.setBranchType(branchType);
+                branchSessionMock.setResourceId(resourceId);
+                branchSessionMock.setApplicationData(applicationData);
+                branchSessionMock.setBranchId(branchId);
+
+                branches.add(branchSessionMock);
+
+                return branchId;
+            }
+        };
+        DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION, 
mockResourceManager);
+
+        TransactionManager mockTransactionManager = new TransactionManager() {
+            @Override
+            public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
+                return XID.generateXID(UUIDGenerator.generateUUID());
+            }
+
+            @Override
+            public GlobalStatus commit(String xid) throws TransactionException 
{
+                return GlobalStatus.Committed;
+            }
+
+            @Override
+            public GlobalStatus rollback(String xid) throws 
TransactionException {
+                List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+                for (BranchSessionMock branch : branches) {
+                    mockResourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
+                }
 
-    @BeforeAll
-    public static void init() throws IOException {
-        System.setProperty("config.type", "file");
-        System.setProperty("config.file.name", "file.conf");
-        System.setProperty("txServiceGroup", "default_tx_group");
-        System.setProperty("service.vgroupMapping.default_tx_group", 
"default");
+                return GlobalStatus.Rollbacked;
+            }
+
+            @Override
+            public GlobalStatus getStatus(String xid) throws 
TransactionException {
+                return GlobalStatus.Begin;
+            }
+
+            @Override
+            public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
+                return globalStatus;
+            }
+        };
+        TransactionManagerHolder.set(mockTransactionManager);
     }
 
     @AfterEach
-    public void clearTccResource() {
-        
DefaultResourceManager.get().getResourceManager(BranchType.SAGA_ANNOTATION).getManagedResources().clear();
+    public void afterEach() {
+        DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION, 
backResourceManager);
+        TransactionManagerHolder.set(backTransactionManager);
     }
 
     @Test
@@ -77,15 +134,10 @@ public class SagaActionInterceptorParserTest {
 
     @Test
     public void testSagaAnnotation_should_commit() throws TransactionException 
{
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         NormalSagaAnnotationActionImpl sagaActionProxy = 
ProxyUtil.createProxy(new NormalSagaAnnotationActionImpl());
 
         SagaParam sagaParam = new SagaParam(2, "[email protected]");
-        List<String> listB = Arrays.asList("b");
+        List<String> listB = Collections.singletonList("b");
 
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
 
@@ -96,11 +148,7 @@ public class SagaActionInterceptorParserTest {
 
             Assertions.assertTrue(result);
 
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.commit();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -111,15 +159,10 @@ public class SagaActionInterceptorParserTest {
 
     @Test
     public void testSagaAnnotation_should_rollback() throws 
TransactionException {
-        DefaultResourceManager.get();
-        DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION, 
resourceManager);
-
-        TransactionManagerHolder.set(transactionManager);
-
         NormalSagaAnnotationActionImpl sagaActionProxy = 
ProxyUtil.createProxy(new NormalSagaAnnotationActionImpl());
 
         SagaParam sagaParam = new SagaParam(1, "[email protected]");
-        List<String> listB = Arrays.asList("b");
+        List<String> listB = Collections.singletonList("b");
 
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
 
@@ -129,12 +172,7 @@ public class SagaActionInterceptorParserTest {
             boolean result = sagaActionProxy.commit(null, 1, listB, sagaParam);
 
             Assertions.assertFalse(result);
-
-            if (result) {
-                tx.commit();
-            } else {
-                tx.rollback();
-            }
+            tx.rollback();
         } catch (Exception exx) {
             tx.rollback();
             throw exx;
@@ -143,68 +181,5 @@ public class SagaActionInterceptorParserTest {
         Assertions.assertFalse(sagaActionProxy.isCommit());
     }
 
-    private static Map<String, List<BranchSessionMock>> applicationDataMap = 
new ConcurrentHashMap<>();
-
-
-    private static TransactionManager transactionManager = new 
TransactionManager() {
-        @Override
-        public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
-            return DEFAULT_XID;
-        }
-
-        @Override
-        public GlobalStatus commit(String xid) throws TransactionException {
-            return GlobalStatus.Committed;
-        }
-
-        @Override
-        public GlobalStatus rollback(String xid) throws TransactionException {
-
-            rollbackAll(xid);
-
-            return GlobalStatus.Rollbacked;
-        }
-
-        @Override
-        public GlobalStatus getStatus(String xid) throws TransactionException {
-            return GlobalStatus.Begin;
-        }
-
-        @Override
-        public GlobalStatus globalReport(String xid, GlobalStatus 
globalStatus) throws TransactionException {
-            return globalStatus;
-        }
-    };
-
-
-    private static ResourceManager resourceManager = new 
SagaAnnotationResourceManager() {
-
-        @Override
-        public Long branchRegister(BranchType branchType, String resourceId, 
String clientId, String xid, String applicationData, String lockKeys) throws 
TransactionException {
-
-            long branchId = System.currentTimeMillis();
-
-            List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-            BranchSessionMock branchSessionMock = new BranchSessionMock();
-            branchSessionMock.setXid(xid);
-            branchSessionMock.setBranchType(branchType);
-            branchSessionMock.setResourceId(resourceId);
-            branchSessionMock.setApplicationData(applicationData);
-            branchSessionMock.setBranchId(branchId);
-
-            branches.add(branchSessionMock);
-
-            return branchId;
-        }
-    };
-
-
-    public static void rollbackAll(String xid) throws TransactionException {
-
-        List<BranchSessionMock> branches = 
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
-        for (BranchSessionMock branch : branches) {
-            resourceManager.branchRollback(branch.getBranchType(), 
branch.getXid(), branch.getBranchId(), branch.getResourceId(), 
branch.getApplicationData());
-        }
-    }
 
 }
\ No newline at end of file
diff --git 
a/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java 
b/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
index 9ee20b3073..ffd84b7c06 100644
--- a/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
@@ -18,18 +18,38 @@ package org.apache.seata.tm;
 
 
 import org.apache.seata.common.exception.ShouldNeverHappenException;
+import org.apache.seata.core.exception.TransactionException;
+import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.TransactionManager;
 import org.apache.seata.tm.api.transaction.MockTransactionManager;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 class TransactionManagerHolderTest {
 
+    private TransactionManager backTransactionManager;
+
+    @BeforeEach
+    public void beforeEach() {
+        backTransactionManager = TransactionManagerHolder.get();
+    }
+
+    @AfterEach
+    public void afterEach() {
+        TransactionManagerHolder.set(backTransactionManager);
+    }
+
 
     @Test
     void getTest() {
-        Assertions.assertThrows(ShouldNeverHappenException.class, () -> {   
TransactionManagerHolder.set(null);
-            TransactionManagerHolder.get();});
+        Assertions.assertThrows(ShouldNeverHappenException.class, () -> {
+            TransactionManagerHolder.set(null);
+            TransactionManagerHolder.get();
+        });
     }
 
 
@@ -38,7 +58,7 @@ class TransactionManagerHolderTest {
         MockTransactionManager mockTransactionManager = new 
MockTransactionManager();
         TransactionManagerHolder.set(mockTransactionManager);
         TransactionManager transactionManager = TransactionManagerHolder.get();
-        Assertions.assertTrue(transactionManager instanceof 
MockTransactionManager);
+        Assertions.assertInstanceOf(MockTransactionManager.class, 
transactionManager);
     }
 
 }
diff --git a/tm/src/test/java/org/apache/seata/tm/api/APITest.java 
b/tm/src/test/java/org/apache/seata/tm/api/APITest.java
index efd6f2960c..a291f899cd 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/APITest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/APITest.java
@@ -22,6 +22,7 @@ import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.TransactionManager;
 import org.apache.seata.tm.TransactionManagerHolder;
 import org.apache.seata.tm.api.transaction.TransactionInfo;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -36,11 +37,14 @@ public class APITest {
     private static final String TX_NAME = "test";
     private static final int TIME_OUT = 30000;
 
+    private static TransactionManager backTransactionManager;
+
     /**
      * Init.
      */
     @BeforeAll
     public static void init() {
+        backTransactionManager = TransactionManagerHolder.get();
         TransactionManagerHolder.set(new TransactionManager() {
             @Override
             public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout)
@@ -70,6 +74,11 @@ public class APITest {
         });
     }
 
+    @AfterAll
+    public static void afterAll() {
+        TransactionManagerHolder.set(backTransactionManager);
+    }
+
     /**
      * Clean root context.
      */
@@ -204,7 +213,7 @@ public class APITest {
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
         tx.globalReport(tx.getStatus());
 
-        Assertions.assertThrows(IllegalStateException.class, () ->  
tx.globalReport(null));
+        Assertions.assertThrows(IllegalStateException.class, () -> 
tx.globalReport(null));
         Assertions.assertThrows(IllegalStateException.class, () -> {
             RootContext.unbind();
             GlobalTransaction tx2 = 
GlobalTransactionContext.getCurrentOrCreate();
diff --git 
a/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java 
b/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
index 35af8625f6..c77075ac6f 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
@@ -17,28 +17,34 @@
 package org.apache.seata.tm.api;
 
 
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
 import org.apache.seata.core.context.RootContext;
 import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.TransactionManager;
 import org.apache.seata.tm.TransactionManagerHolder;
 import org.apache.seata.tm.api.transaction.MyRuntimeException;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 
 class DefaultGlobalTransactionTest {
-    private static final String DEFAULT_XID = "1234567890";
 
-    @BeforeAll
-    public static void init() {
+    private TransactionManager backTransactionManager;
+
+    @BeforeEach
+    public void init() {
+        backTransactionManager = TransactionManagerHolder.get();
 
         TransactionManagerHolder.set(new TransactionManager() {
             @Override
             public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout)
                     throws TransactionException {
-                return DEFAULT_XID;
+                return XID.generateXID(UUIDGenerator.generateUUID());
             }
 
             @Override
@@ -53,7 +59,7 @@ class DefaultGlobalTransactionTest {
 
             @Override
             public GlobalStatus getStatus(String xid) throws 
TransactionException {
-              throw new MyRuntimeException("");
+                throw new MyRuntimeException("");
             }
 
             @Override
@@ -61,12 +67,12 @@ class DefaultGlobalTransactionTest {
                 return globalStatus;
             }
         });
+        RootContext.unbind();
     }
 
 
     @Test
     public void commitRetryExceptionTest() throws TransactionException {
-        RootContext.unbind();
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
         tx.begin();
         Assertions.assertThrows(TransactionException.class, tx::commit);
@@ -74,7 +80,6 @@ class DefaultGlobalTransactionTest {
 
     @Test
     public void commitNoXIDExceptionTest() throws TransactionException {
-        RootContext.unbind();
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
         Assertions.assertThrows(IllegalStateException.class, tx::commit);
     }
@@ -82,7 +87,6 @@ class DefaultGlobalTransactionTest {
 
     @Test
     public void rollBackRetryExceptionTest() throws TransactionException {
-        RootContext.unbind();
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
         tx.begin();
         Assertions.assertThrows(TransactionException.class, tx::rollback);
@@ -90,10 +94,14 @@ class DefaultGlobalTransactionTest {
 
     @Test
     public void rollBackNoXIDExceptionTest() throws TransactionException {
-        RootContext.unbind();
         GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
         tx.begin();
         Assertions.assertThrows(TransactionException.class, tx::rollback);
     }
 
+    @AfterEach
+    public void afterEach() {
+        TransactionManagerHolder.set(backTransactionManager);
+    }
+
 }
diff --git 
a/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java 
b/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
index c5bef02966..3c10f6ecec 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
@@ -21,21 +21,24 @@ import org.apache.seata.core.exception.TransactionException;
 import org.apache.seata.core.model.GlobalStatus;
 import org.apache.seata.core.model.TransactionManager;
 import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 
 class GlobalTransactionContextTest {
     private static final String DEFAULT_XID = "1234567890";
 
-    @BeforeAll
-    public static void init() {
+    private TransactionManager backTransactionManager;
+
+    @BeforeEach
+    public void init() {
+        backTransactionManager = TransactionManagerHolder.get();
 
         TransactionManagerHolder.set(new TransactionManager() {
             @Override
-            public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout)
-                    throws TransactionException {
+            public String begin(String applicationId, String 
transactionServiceGroup, String name, int timeout) throws TransactionException {
                 return DEFAULT_XID;
             }
 
@@ -67,6 +70,10 @@ class GlobalTransactionContextTest {
         tx = GlobalTransactionContext.reload(DEFAULT_XID);
         GlobalTransaction finalTx = tx;
         Assertions.assertThrows(IllegalStateException.class, finalTx::begin);
+    }
 
+    @AfterEach
+    public void afterEach() {
+        TransactionManagerHolder.set(backTransactionManager);
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to