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

jlmonteiro pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/main by this push:
     new 0c1eabd355 chore: migrate tests from JMock to Mockito (#1814)
0c1eabd355 is described below

commit 0c1eabd35515ba560c3c404a5843bad566de2adb
Author: JB Onofré <[email protected]>
AuthorDate: Mon Mar 23 14:29:29 2026 +0100

    chore: migrate tests from JMock to Mockito (#1814)
    
    * chore: migrate tests from JMock to Mockito
    
    Replace JMock with Mockito in activemq-ra, activemq-unit-tests, and
    activemq-kahadb-store modules. Remove JMock dependencies from POMs.
    
    * chore: address review feedback on JMock to Mockito migration
    
    - Replace star imports with explicit imports in MessageEndpointProxyTest
    - Add missing Mockito verify calls for all test methods to match
      original JMock expectations (never, release, successful calls)
    - Extract common mock setup into setupCommonMocks() helper in
      ServerSessionImplTest
    - Remove unused XAResource import
---
 activemq-kahadb-store/pom.xml                      |  10 -
 activemq-ra/pom.xml                                |   9 +-
 .../activemq/ra/MessageEndpointProxyTest.java      |  97 ++----
 .../apache/activemq/ra/ServerSessionImplTest.java  | 330 +++++----------------
 activemq-unit-tests/pom.xml                        |  10 -
 .../org/apache/activemq/config/ConfigTest.java     |  48 +--
 .../store/jdbc/LeaseDatabaseLockerTest.java        |  48 +--
 .../discovery/DiscoveryNetworkReconnectTest.java   | 156 ++++------
 pom.xml                                            |  13 -
 9 files changed, 203 insertions(+), 518 deletions(-)

diff --git a/activemq-kahadb-store/pom.xml b/activemq-kahadb-store/pom.xml
index 0f4804f926..a05bbdea73 100644
--- a/activemq-kahadb-store/pom.xml
+++ b/activemq-kahadb-store/pom.xml
@@ -122,16 +122,6 @@
       <artifactId>log4j-slf4j2-impl</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-junit4</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-legacy</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git a/activemq-ra/pom.xml b/activemq-ra/pom.xml
index 3f27767cc1..c55b66dca9 100644
--- a/activemq-ra/pom.xml
+++ b/activemq-ra/pom.xml
@@ -60,13 +60,8 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-junit4</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-legacy</artifactId>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git 
a/activemq-ra/src/test/java/org/apache/activemq/ra/MessageEndpointProxyTest.java
 
b/activemq-ra/src/test/java/org/apache/activemq/ra/MessageEndpointProxyTest.java
index 77f1886835..ad21dd0c01 100644
--- 
a/activemq-ra/src/test/java/org/apache/activemq/ra/MessageEndpointProxyTest.java
+++ 
b/activemq-ra/src/test/java/org/apache/activemq/ra/MessageEndpointProxyTest.java
@@ -18,6 +18,12 @@ package org.apache.activemq.ra;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.same;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
 
 import java.lang.reflect.Method;
 
@@ -26,31 +32,23 @@ import jakarta.jms.MessageListener;
 import jakarta.resource.ResourceException;
 import jakarta.resource.spi.endpoint.MessageEndpoint;
 
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
 @Ignore
-@RunWith(JMock.class)
 public class MessageEndpointProxyTest {
 
     private MessageEndpoint mockEndpoint;
     private EndpointAndListener mockEndpointAndListener;
     private Message stubMessage;
     private MessageEndpointProxy endpointProxy;
-    private Mockery context;
 
     @Before
     public void setUp() {
-        context = new Mockery();
-        mockEndpoint = context.mock(MessageEndpoint.class);
-        context.mock(MessageListener.class);
-        mockEndpointAndListener = context.mock(EndpointAndListener.class);
-        stubMessage = context.mock(Message.class);
+        mockEndpoint = mock(MessageEndpoint.class);
+        mockEndpointAndListener = mock(EndpointAndListener.class);
+        stubMessage = mock(Message.class);
         endpointProxy = new MessageEndpointProxy(mockEndpointAndListener);
     }
 
@@ -66,27 +64,18 @@ public class MessageEndpointProxyTest {
 
     @Test(timeout = 60000)
     public void testSuccessfulCallSequence() throws Exception {
-        setupBeforeDeliverySuccessful();
-        setupOnMessageSuccessful();
-        setupAfterDeliverySuccessful();
-
         doBeforeDeliveryExpectSuccess();
         doOnMessageExpectSuccess();
         doAfterDeliveryExpectSuccess();
+
+        verify(mockEndpointAndListener).beforeDelivery(any(Method.class));
+        verify(mockEndpointAndListener).onMessage(stubMessage);
+        verify(mockEndpointAndListener).afterDelivery();
     }
 
     @Test(timeout = 60000)
     public void testBeforeDeliveryFailure() throws Exception {
-        context.checking(new Expectations() {{
-            oneOf 
(mockEndpointAndListener).beforeDelivery(with(any(Method.class)));
-            will(throwException(new ResourceException()));
-        }});
-        context.checking(new Expectations() {{
-            never (mockEndpointAndListener).onMessage(null);
-            never (mockEndpointAndListener).afterDelivery();
-        }});
-
-        setupExpectRelease();
+        doThrow(new 
ResourceException()).when(mockEndpointAndListener).beforeDelivery(any(Method.class));
 
         try {
             
endpointProxy.beforeDelivery(ActiveMQEndpointWorker.ON_MESSAGE_METHOD);
@@ -97,21 +86,19 @@ public class MessageEndpointProxyTest {
         doOnMessageExpectInvalidMessageEndpointException();
         doAfterDeliveryExpectInvalidMessageEndpointException();
 
+        verify(mockEndpointAndListener, never()).onMessage(any());
+        verify(mockEndpointAndListener, never()).afterDelivery();
+        verify(mockEndpointAndListener).release();
+
         doFullyDeadCheck();
     }
 
     @Test(timeout = 60000)
     public void testOnMessageFailure() throws Exception {
-        setupBeforeDeliverySuccessful();
-
-        context.checking(new Expectations() {{
-            oneOf (mockEndpointAndListener).onMessage(with(same(stubMessage)));
-            will(throwException(new RuntimeException()));
-        }});
+        doBeforeDeliveryExpectSuccess();
 
-        setupAfterDeliverySuccessful();
+        doThrow(new 
RuntimeException()).when(mockEndpointAndListener).onMessage(same(stubMessage));
 
-        doBeforeDeliveryExpectSuccess();
         try {
             endpointProxy.onMessage(stubMessage);
             fail("An exception should have been thrown");
@@ -120,21 +107,18 @@ public class MessageEndpointProxyTest {
         }
         doAfterDeliveryExpectSuccess();
 
+        verify(mockEndpointAndListener).beforeDelivery(any(Method.class));
+        verify(mockEndpointAndListener).onMessage(same(stubMessage));
+        verify(mockEndpointAndListener).afterDelivery();
     }
 
     @Test(timeout = 60000)
     public void testAfterDeliveryFailure() throws Exception {
-        setupBeforeDeliverySuccessful();
-        setupOnMessageSuccessful();
-
-        context.checking(new Expectations() {{
-            oneOf (mockEndpointAndListener).afterDelivery(); 
will(throwException(new ResourceException()));
-        }});
-
-        setupExpectRelease();
-
         doBeforeDeliveryExpectSuccess();
         doOnMessageExpectSuccess();
+
+        doThrow(new 
ResourceException()).when(mockEndpointAndListener).afterDelivery();
+
         try {
             endpointProxy.afterDelivery();
             fail("An exception should have been thrown");
@@ -142,6 +126,11 @@ public class MessageEndpointProxyTest {
             assertTrue(true);
         }
 
+        verify(mockEndpointAndListener).beforeDelivery(any(Method.class));
+        verify(mockEndpointAndListener).onMessage(stubMessage);
+        verify(mockEndpointAndListener).afterDelivery();
+        verify(mockEndpointAndListener).release();
+
         doFullyDeadCheck();
     }
 
@@ -152,30 +141,6 @@ public class MessageEndpointProxyTest {
         doReleaseExpectInvalidMessageEndpointException();
     }
 
-    private void setupAfterDeliverySuccessful() throws Exception {
-        context.checking(new Expectations() {{
-            oneOf (mockEndpointAndListener).afterDelivery();
-        }});
-    }
-
-    private void setupOnMessageSuccessful() {
-        context.checking(new Expectations() {{
-            oneOf (mockEndpointAndListener).onMessage(with(stubMessage));
-        }});
-    }
-
-    private void setupBeforeDeliverySuccessful() throws Exception {
-        context.checking(new Expectations() {{
-            oneOf 
(mockEndpointAndListener).beforeDelivery(with(any(Method.class)));
-        }});
-    }
-
-    private void setupExpectRelease() {
-        context.checking(new Expectations() {{
-            oneOf (mockEndpointAndListener).release();
-        }});
-    }
-
     private void doBeforeDeliveryExpectSuccess() {
         try {
             
endpointProxy.beforeDelivery(ActiveMQEndpointWorker.ON_MESSAGE_METHOD);
diff --git 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
index 11359eec4e..cb8ed1b1c9 100644
--- 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
+++ 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
@@ -25,21 +25,10 @@ import org.apache.activemq.command.MessageDispatch;
 import org.apache.activemq.command.MessageId;
 import org.apache.activemq.command.TransactionInfo;
 import org.apache.activemq.util.Wait;
-import org.hamcrest.Description;
-import org.hamcrest.Matchers;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.api.Action;
-import org.jmock.api.Invocation;
-import org.jmock.imposters.ByteBuddyClassImposteriser;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnitRuleMockery;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,7 +40,6 @@ import jakarta.resource.spi.work.ExecutionContext;
 import jakarta.resource.spi.work.Work;
 import jakarta.resource.spi.work.WorkListener;
 import jakarta.resource.spi.work.WorkManager;
-import javax.transaction.xa.XAResource;
 import java.lang.reflect.Method;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -60,21 +48,14 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
-import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.*;
+import static org.mockito.ArgumentMatchers.*;
 
 @Ignore
-@RunWith(JMock.class)
 public class ServerSessionImplTest {
 
-    @Rule
-    public JUnitRuleMockery context = new JUnitRuleMockery() {
-        {
-            setImposteriser(ByteBuddyClassImposteriser.INSTANCE);
-        }
-    };
-
     private static final Logger LOG = 
LoggerFactory.getLogger(ServerSessionImplTest.class);
     private static final String BROKER_URL = 
"vm://localhost?broker.persistent=false";
 
@@ -86,6 +67,12 @@ public class ServerSessionImplTest {
     private ActiveMQSession session;
     private ActiveMQEndpointWorker endpointWorker;
 
+    private MessageEndpointFactory messageEndpointFactory;
+    private MessageResourceAdapter resourceAdapter;
+    private ActiveMQEndpointActivationKey key;
+    private MessageActivationSpec messageActivationSpec;
+    private BootstrapContext bootstrapContext;
+
     @Before
     public void setUp() throws Exception {
         org.apache.activemq.ActiveMQConnectionFactory factory = new 
org.apache.activemq.ActiveMQConnectionFactory(BROKER_URL);
@@ -94,6 +81,29 @@ public class ServerSessionImplTest {
         session = (ActiveMQSession) con.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
     }
 
+    private void setupCommonMocks() throws Exception {
+        messageEndpointFactory = mock(MessageEndpointFactory.class);
+        resourceAdapter = mock(MessageResourceAdapter.class);
+        key = mock(ActiveMQEndpointActivationKey.class);
+        messageEndpoint = mock(MessageEndpointProxy.class);
+        workManager = mock(WorkManager.class);
+        messageActivationSpec = mock(MessageActivationSpec.class);
+        bootstrapContext = mock(BootstrapContext.class);
+
+        
lenient().when(bootstrapContext.getWorkManager()).thenReturn(workManager);
+        
lenient().when(resourceAdapter.getBootstrapContext()).thenReturn(bootstrapContext);
+        
lenient().when(messageEndpointFactory.isDeliveryTransacted(any(Method.class))).thenReturn(Boolean.FALSE);
+        
lenient().when(key.getMessageEndpointFactory()).thenReturn(messageEndpointFactory);
+        
lenient().when(key.getActivationSpec()).thenReturn(messageActivationSpec);
+        
lenient().when(messageActivationSpec.isUseJndi()).thenReturn(Boolean.FALSE);
+        
lenient().when(messageActivationSpec.getDestinationType()).thenReturn("jakarta.jms.Queue");
+        
lenient().when(messageActivationSpec.getDestination()).thenReturn("Queue");
+        
lenient().when(messageActivationSpec.getAcknowledgeModeForSession()).thenReturn(1);
+        
lenient().when(messageActivationSpec.getEnableBatchBooleanValue()).thenReturn(Boolean.FALSE);
+        
lenient().when(messageActivationSpec.isUseRAManagedTransactionEnabled()).thenReturn(Boolean.TRUE);
+        
lenient().when(messageEndpointFactory.createEndpoint(isNull())).thenReturn(messageEndpoint);
+    }
+
     @After
     public void tearDown() throws Exception {
         if (con != null) {
@@ -104,19 +114,16 @@ public class ServerSessionImplTest {
     @Test
     public void testRunDetectsStoppedSession() throws Exception {
 
-        pool = context.mock(ServerSessionPoolImpl.class);
-        workManager = context.mock(WorkManager.class);
-        messageEndpoint = context.mock(MessageEndpointProxy.class);
+        pool = mock(ServerSessionPoolImpl.class);
+        workManager = mock(WorkManager.class);
+        messageEndpoint = mock(MessageEndpointProxy.class);
 
         serverSession = new ServerSessionImpl(pool, session, workManager, 
messageEndpoint, false, 10);
 
         con.close();
-        context.checking(new Expectations() {
-            {
-                oneOf(pool).removeFromPool(with(same(serverSession)));
-            }
-        });
         serverSession.run();
+
+        verify(pool).removeFromPool(same(serverSession));
     }
 
     @Test
@@ -125,83 +132,22 @@ public class ServerSessionImplTest {
         final int maxMessages = 4000;
         final CountDownLatch messageCount = new CountDownLatch(maxMessages);
 
-        final MessageEndpointFactory messageEndpointFactory = 
context.mock(MessageEndpointFactory.class);
-        final MessageResourceAdapter resourceAdapter = 
context.mock(MessageResourceAdapter.class);
-        final ActiveMQEndpointActivationKey key = 
context.mock(ActiveMQEndpointActivationKey.class);
-        messageEndpoint = context.mock(MessageEndpointProxy.class);
-        workManager = context.mock(WorkManager.class);
-        final MessageActivationSpec messageActivationSpec = 
context.mock(MessageActivationSpec.class);
-        final BootstrapContext boostrapContext = 
context.mock(BootstrapContext.class);
-        context.checking(new Expectations() {
-            {
-                allowing(boostrapContext).getWorkManager();
-                will(returnValue(workManager));
-                allowing(resourceAdapter).getBootstrapContext();
-                will(returnValue(boostrapContext));
-                
allowing(messageEndpointFactory).isDeliveryTransacted(with(any(Method.class)));
-                will(returnValue(Boolean.FALSE));
-                allowing(key).getMessageEndpointFactory();
-                will(returnValue(messageEndpointFactory));
-                allowing(key).getActivationSpec();
-                will(returnValue(messageActivationSpec));
-                allowing(messageActivationSpec).isUseJndi();
-                will(returnValue(Boolean.FALSE));
-                allowing(messageActivationSpec).getDestinationType();
-                will(returnValue("jakarta.jms.Queue"));
-                allowing(messageActivationSpec).getDestination();
-                will(returnValue("Queue"));
-                allowing(messageActivationSpec).getAcknowledgeModeForSession();
-                will(returnValue(1));
-                allowing(messageActivationSpec).getMaxSessionsIntValue();
-                will(returnValue(1));
-                allowing(messageActivationSpec).getEnableBatchBooleanValue();
-                will(returnValue(Boolean.FALSE));
-                
allowing(messageActivationSpec).isUseRAManagedTransactionEnabled();
-                will(returnValue(Boolean.TRUE));
-                
allowing(messageEndpointFactory).createEndpoint(with(nullValue(XAResource.class)));
-                will(returnValue(messageEndpoint));
-
-                allowing(workManager).scheduleWork((Work) 
with(any(Work.class)), with(any(long.class)), with(any(ExecutionContext.class)),
-                    with(any(WorkListener.class)));
-                will(new Action() {
-                    @Override
-                    public Object invoke(Invocation invocation) throws 
Throwable {
-                        return null;
-                    }
+        setupCommonMocks();
+        
lenient().when(messageActivationSpec.getMaxSessionsIntValue()).thenReturn(1);
 
-                    @Override
-                    public void describeTo(Description description) {
-                    }
-                });
-
-                allowing(messageEndpoint).beforeDelivery((Method) 
with(any(Method.class)));
-                
allowing(messageEndpoint).onMessage(with(any(jakarta.jms.Message.class)));
-                will(new Action() {
-                    @Override
-                    public Object invoke(Invocation invocation) throws 
Throwable {
-                        messageCount.countDown();
-                        if (messageCount.getCount() < maxMessages - 11) {
-                            TimeUnit.MILLISECONDS.sleep(200);
-                        }
-                        return null;
-                    }
-
-                    @Override
-                    public void describeTo(Description description) {
-                        description.appendText("Keep message count");
-                    }
-                });
-                allowing(messageEndpoint).afterDelivery();
-                allowing(messageEndpoint).release();
-
-                allowing(workManager).scheduleWork(
-                    with(any(Work.class)),
-                    with(any(Long.TYPE)),
-                    with(nullValue(ExecutionContext.class)),
-                    with(nullValue(WorkListener.class)));
+        lenient().doAnswer(invocation -> null).when(workManager).scheduleWork(
+            any(Work.class), anyLong(), any(ExecutionContext.class), 
any(WorkListener.class));
 
+        
lenient().doNothing().when(messageEndpoint).beforeDelivery(any(Method.class));
+        lenient().doAnswer(invocation -> {
+            messageCount.countDown();
+            if (messageCount.getCount() < maxMessages - 11) {
+                TimeUnit.MILLISECONDS.sleep(200);
             }
-        });
+            return null;
+        }).when(messageEndpoint).onMessage(any(jakarta.jms.Message.class));
+        lenient().doNothing().when(messageEndpoint).afterDelivery();
+        lenient().doNothing().when(messageEndpoint).release();
 
         endpointWorker = new ActiveMQEndpointWorker(resourceAdapter, key);
         endpointWorker.setConnection(con);
@@ -258,111 +204,41 @@ public class ServerSessionImplTest {
 
         ExecutorService executorService = Executors.newCachedThreadPool();
 
+        setupCommonMocks();
+        
lenient().when(messageActivationSpec.getMaxSessionsIntValue()).thenReturn(10);
 
-        final MessageEndpointFactory messageEndpointFactory = 
context.mock(MessageEndpointFactory.class);
-        final MessageResourceAdapter resourceAdapter = 
context.mock(MessageResourceAdapter.class);
-        final ActiveMQEndpointActivationKey key = 
context.mock(ActiveMQEndpointActivationKey.class);
-        messageEndpoint = context.mock(MessageEndpointProxy.class);
-        workManager = context.mock(WorkManager.class);
-        final MessageActivationSpec messageActivationSpec = 
context.mock(MessageActivationSpec.class);
-        final BootstrapContext boostrapContext = 
context.mock(BootstrapContext.class);
-        context.checking(new Expectations() {
-            {
-                allowing(boostrapContext).getWorkManager();
-                will(returnValue(workManager));
-                allowing(resourceAdapter).getBootstrapContext();
-                will(returnValue(boostrapContext));
-                
allowing(messageEndpointFactory).isDeliveryTransacted(with(any(Method.class)));
-                will(returnValue(Boolean.FALSE));
-                allowing(key).getMessageEndpointFactory();
-                will(returnValue(messageEndpointFactory));
-                allowing(key).getActivationSpec();
-                will(returnValue(messageActivationSpec));
-                allowing(messageActivationSpec).isUseJndi();
-                will(returnValue(Boolean.FALSE));
-                allowing(messageActivationSpec).getDestinationType();
-                will(returnValue("jakarta.jms.Queue"));
-                allowing(messageActivationSpec).getDestination();
-                will(returnValue("Queue"));
-                allowing(messageActivationSpec).getAcknowledgeModeForSession();
-                will(returnValue(1));
-                allowing(messageActivationSpec).getMaxSessionsIntValue();
-                will(returnValue(10));
-                allowing(messageActivationSpec).getEnableBatchBooleanValue();
-                will(returnValue(Boolean.FALSE));
-                
allowing(messageActivationSpec).isUseRAManagedTransactionEnabled();
-                will(returnValue(Boolean.TRUE));
-                
allowing(messageEndpointFactory).createEndpoint(with(nullValue(XAResource.class)));
-                will(returnValue(messageEndpoint));
-
-                allowing(workManager).scheduleWork((Work) 
with(any(Work.class)), with(any(long.class)), with(any(ExecutionContext.class)),
-                        with(any(WorkListener.class)));
-                will(new Action() {
-                    @Override
-                    public Object invoke(Invocation invocation) throws 
Throwable {
-                        LOG.info("Wok manager invocation: " + invocation);
-
-                        if (invocation.getParameter(0) instanceof 
ServerSessionImpl) {
-                            final ServerSessionImpl serverSession1 = 
(ServerSessionImpl)invocation.getParameter(0);
-                            executorService.execute(new Runnable() {
-                                @Override
-                                public void run() {
-                                    try {
-                                        serverSession1.run();
-                                    } catch (Exception e) {
-                                        LOG.error("Error on Work run: {}", 
serverSession1, e);
-                                        e.printStackTrace();
-                                    }
-                                }
-                            });
-                        }
-                        return null;
-                    }
-
-                    @Override
-                    public void describeTo(Description description) {
-                    }
-                });
-
-                allowing(messageEndpoint).beforeDelivery((Method) 
with(any(Method.class)));
-                
allowing(messageEndpoint).onMessage(with(any(jakarta.jms.Message.class)));
-                will(new Action() {
-                    @Override
-                    public Object invoke(Invocation invocation) throws 
Throwable {
-                        messageCountRef.get().countDown();
-                        return null;
-                    }
+        lenient().doAnswer(invocation -> {
+            LOG.info("Work manager invocation: " + invocation);
 
+            if (invocation.getArgument(0) instanceof ServerSessionImpl) {
+                final ServerSessionImpl serverSession1 = (ServerSessionImpl) 
invocation.getArgument(0);
+                executorService.execute(new Runnable() {
                     @Override
-                    public void describeTo(Description description) {
-                        description.appendText("Keep message count");
-                    }
-                });
-                allowing(messageEndpoint).afterDelivery();
-                will(new Action() {
-                    @Override
-                    public void describeTo(Description description) {
-                        description.appendText("do sync work on broker");
-                    }
-
-                    @Override
-                    public Object invoke(Invocation invocation) throws 
Throwable {
-                        TransactionInfo transactionInfo = new 
TransactionInfo();
-                        transactionInfo.setType(TransactionInfo.END);
-                        LOG.info("AfterDelivery on: " + 
messageCountRef.get().getCount());
-                        return null;
+                    public void run() {
+                        try {
+                            serverSession1.run();
+                        } catch (Exception e) {
+                            LOG.error("Error on Work run: {}", serverSession1, 
e);
+                            e.printStackTrace();
+                        }
                     }
                 });
-                allowing(messageEndpoint).release();
-
-                allowing(workManager).scheduleWork(
-                    with(any(Work.class)),
-                    with(any(Long.TYPE)),
-                    with(nullValue(ExecutionContext.class)),
-                    with(nullValue(WorkListener.class)));
-
             }
-        });
+            return null;
+        }).when(workManager).scheduleWork(any(Work.class), anyLong(), 
any(ExecutionContext.class), any(WorkListener.class));
+
+        
lenient().doNothing().when(messageEndpoint).beforeDelivery(any(Method.class));
+        lenient().doAnswer(invocation -> {
+            messageCountRef.get().countDown();
+            return null;
+        }).when(messageEndpoint).onMessage(any(jakarta.jms.Message.class));
+        lenient().doAnswer(invocation -> {
+            TransactionInfo transactionInfo = new TransactionInfo();
+            transactionInfo.setType(TransactionInfo.END);
+            LOG.info("AfterDelivery on: " + messageCountRef.get().getCount());
+            return null;
+        }).when(messageEndpoint).afterDelivery();
+        lenient().doNothing().when(messageEndpoint).release();
 
         endpointWorker = new ActiveMQEndpointWorker(resourceAdapter, key);
         endpointWorker.setConnection(con);
@@ -456,53 +332,9 @@ public class ServerSessionImplTest {
     @Test
     public void testSessionReusedByPool() throws Exception {
 
-        final MessageEndpointFactory messageEndpointFactory = 
context.mock(MessageEndpointFactory.class);
-        final MessageResourceAdapter resourceAdapter = 
context.mock(MessageResourceAdapter.class);
-        final ActiveMQEndpointActivationKey key = 
context.mock(ActiveMQEndpointActivationKey.class);
-        messageEndpoint = context.mock(MessageEndpointProxy.class);
-        workManager = context.mock(WorkManager.class);
-        final MessageActivationSpec messageActivationSpec = 
context.mock(MessageActivationSpec.class);
-        final BootstrapContext bootstrapContext = 
context.mock(BootstrapContext.class);
-        context.checking(new Expectations() {
-            {
-                allowing(bootstrapContext).getWorkManager();
-                will(returnValue(workManager));
-                allowing(resourceAdapter).getBootstrapContext();
-                will(returnValue(bootstrapContext));
-                
allowing(messageEndpointFactory).isDeliveryTransacted(with(any(Method.class)));
-                will(returnValue(Boolean.FALSE));
-                allowing(key).getMessageEndpointFactory();
-                will(returnValue(messageEndpointFactory));
-                allowing(key).getActivationSpec();
-                will(returnValue(messageActivationSpec));
-                allowing(messageActivationSpec).isUseJndi();
-                will(returnValue(Boolean.FALSE));
-                allowing(messageActivationSpec).getDestinationType();
-                will(returnValue("jakarta.jms.Queue"));
-                allowing(messageActivationSpec).getDestination();
-                will(returnValue("Queue"));
-                allowing(messageActivationSpec).getAcknowledgeModeForSession();
-                will(returnValue(1));
-                allowing(messageActivationSpec).getMaxSessionsIntValue();
-                will(returnValue(10));
-                allowing(messageActivationSpec).getEnableBatchBooleanValue();
-                will(returnValue(Boolean.FALSE));
-                
allowing(messageActivationSpec).isUseRAManagedTransactionEnabled();
-                will(returnValue(Boolean.TRUE));
-                
allowing(messageEndpointFactory).createEndpoint(with(nullValue(XAResource.class)));
-                will(returnValue(messageEndpoint));
-
-                allowing(workManager).scheduleWork((Work) 
with(any(Work.class)), with(any(long.class)), with(any(ExecutionContext.class)),
-                        with(any(WorkListener.class)));
-                allowing(messageEndpoint).release();
-
-                allowing(workManager).scheduleWork(
-                    with(any(Work.class)),
-                    with(any(Long.TYPE)),
-                    with(nullValue(ExecutionContext.class)),
-                    with(nullValue(WorkListener.class)));
-            }
-        });
+        setupCommonMocks();
+        
lenient().when(messageActivationSpec.getMaxSessionsIntValue()).thenReturn(10);
+        lenient().doNothing().when(messageEndpoint).release();
 
         endpointWorker = new ActiveMQEndpointWorker(resourceAdapter, key);
         endpointWorker.setConnection(con);
diff --git a/activemq-unit-tests/pom.xml b/activemq-unit-tests/pom.xml
index 7e1d3c73a5..8a89ea9d3d 100644
--- a/activemq-unit-tests/pom.xml
+++ b/activemq-unit-tests/pom.xml
@@ -267,16 +267,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-junit4</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jmock</groupId>
-      <artifactId>jmock-legacy</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.easymock</groupId>
       <artifactId>easymock</artifactId>
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java 
b/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
index 2c4e327906..09ef1eed4d 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
@@ -20,6 +20,8 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.File;
 import java.sql.Connection;
@@ -54,8 +56,6 @@ import 
org.apache.activemq.store.memory.MemoryPersistenceAdapter;
 import org.apache.activemq.transport.tcp.TcpTransportServer;
 import org.apache.activemq.usage.SystemUsage;
 import org.apache.activemq.xbean.BrokerFactoryBean;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,25 +90,15 @@ public class ConfigTest {
     public void testJdbcLockConfigOverride() throws Exception {
 
         JDBCPersistenceAdapter adapter = new JDBCPersistenceAdapter();
-        Mockery context = new Mockery();
-        final DataSource dataSource = context.mock(DataSource.class);
-        final Connection connection = context.mock(Connection.class);
-        final DatabaseMetaData metadata = context.mock(DatabaseMetaData.class);
-        final ResultSet result = context.mock(ResultSet.class);
+        DataSource dataSource = mock(DataSource.class);
+        Connection connection = mock(Connection.class);
+        DatabaseMetaData metadata = mock(DatabaseMetaData.class);
         adapter.setDataSource(dataSource);
         adapter.setCreateTablesOnStartup(false);
 
-        context.checking(new Expectations() {{
-            allowing(dataSource).getConnection();
-            will(returnValue(connection));
-            allowing(connection).getMetaData();
-            will(returnValue(metadata));
-            allowing(connection);
-            allowing(metadata).getDriverName();
-            will(returnValue("Microsoft_SQL_Server_2005_jdbc_driver"));
-            allowing(result).next();
-            will(returnValue(true));
-        }});
+        when(dataSource.getConnection()).thenReturn(connection);
+        when(connection.getMetaData()).thenReturn(metadata);
+        
when(metadata.getDriverName()).thenReturn("Microsoft_SQL_Server_2005_jdbc_driver");
 
         adapter.start();
         assertTrue("has the locker override", adapter.getLocker() instanceof 
TransactDatabaseLocker);
@@ -118,25 +108,15 @@ public class ConfigTest {
     public void testJdbcLockConfigDefault() throws Exception {
 
         JDBCPersistenceAdapter adapter = new JDBCPersistenceAdapter();
-        Mockery context = new Mockery();
-        final DataSource dataSource = context.mock(DataSource.class);
-        final Connection connection = context.mock(Connection.class);
-        final DatabaseMetaData metadata = context.mock(DatabaseMetaData.class);
-        final ResultSet result = context.mock(ResultSet.class);
+        DataSource dataSource = mock(DataSource.class);
+        Connection connection = mock(Connection.class);
+        DatabaseMetaData metadata = mock(DatabaseMetaData.class);
         adapter.setDataSource(dataSource);
         adapter.setCreateTablesOnStartup(false);
 
-        context.checking(new Expectations() {{
-            allowing(dataSource).getConnection();
-            will(returnValue(connection));
-            allowing(connection).getMetaData();
-            will(returnValue(metadata));
-            allowing(connection);
-            allowing(metadata).getDriverName();
-            will(returnValue("Some_Unknown_driver"));
-            allowing(result).next();
-            will(returnValue(true));
-        }});
+        when(dataSource.getConnection()).thenReturn(connection);
+        when(connection.getMetaData()).thenReturn(metadata);
+        when(metadata.getDriverName()).thenReturn("Some_Unknown_driver");
 
         adapter.start();
         assertEquals("has the default locker", adapter.getLocker().getClass(), 
DefaultDatabaseLocker.class);
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/LeaseDatabaseLockerTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/LeaseDatabaseLockerTest.java
index 6df37e61e6..970e624384 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/LeaseDatabaseLockerTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/LeaseDatabaseLockerTest.java
@@ -32,9 +32,6 @@ import org.apache.activemq.broker.AbstractLocker;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter;
 import org.apache.activemq.util.Wait;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -46,6 +43,9 @@ import org.slf4j.LoggerFactory;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 import org.junit.experimental.categories.Category;
 import org.apache.activemq.test.annotations.ParallelTest;
 
@@ -239,35 +239,19 @@ public class LeaseDatabaseLockerTest {
 
     public long callDiffOffset(LeaseDatabaseLocker underTest, final long 
dbTime) throws Exception {
 
-        Mockery context = new Mockery() {{
-            setImposteriser(ClassImposteriser.INSTANCE);
-        }};
-        final Statements statements = context.mock(Statements.class);
-        final JDBCPersistenceAdapter jdbcPersistenceAdapter = 
context.mock(JDBCPersistenceAdapter.class);
-        final Connection connection = context.mock(Connection.class);
-        final PreparedStatement preparedStatement = 
context.mock(PreparedStatement.class);
-        final ResultSet resultSet = context.mock(ResultSet.class);
-        final Timestamp timestamp = context.mock(Timestamp.class);
-
-        context.checking(new Expectations() {{
-            allowing(jdbcPersistenceAdapter).getStatements();
-            will(returnValue(statements));
-            allowing(jdbcPersistenceAdapter);
-            allowing(statements);
-            allowing(connection).prepareStatement(with(any(String.class)));
-            will(returnValue(preparedStatement));
-            allowing(connection);
-            allowing(preparedStatement).executeQuery();
-            will(returnValue(resultSet));
-            allowing(resultSet).next();
-            will(returnValue(true));
-            allowing(resultSet).getTimestamp(1);
-            will(returnValue(timestamp));
-            allowing(timestamp).getTime();
-            will(returnValue(dbTime));
-            allowing(resultSet).close();
-            allowing(preparedStatement).close();
-        }});
+        Statements statements = mock(Statements.class);
+        JDBCPersistenceAdapter jdbcPersistenceAdapter = 
mock(JDBCPersistenceAdapter.class);
+        Connection connection = mock(Connection.class);
+        PreparedStatement preparedStatement = mock(PreparedStatement.class);
+        ResultSet resultSet = mock(ResultSet.class);
+        Timestamp timestamp = mock(Timestamp.class);
+
+        when(jdbcPersistenceAdapter.getStatements()).thenReturn(statements);
+        
when(connection.prepareStatement(anyString())).thenReturn(preparedStatement);
+        when(preparedStatement.executeQuery()).thenReturn(resultSet);
+        when(resultSet.next()).thenReturn(true);
+        when(resultSet.getTimestamp(1)).thenReturn(timestamp);
+        when(timestamp.getTime()).thenReturn(dbTime);
 
         underTest.configure(jdbcPersistenceAdapter);
         underTest.setLockable(jdbcPersistenceAdapter);
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/discovery/DiscoveryNetworkReconnectTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/discovery/DiscoveryNetworkReconnectTest.java
index 378c54b2a8..eb61c36bee 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/discovery/DiscoveryNetworkReconnectTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/discovery/DiscoveryNetworkReconnectTest.java
@@ -21,19 +21,10 @@ import org.apache.activemq.broker.jmx.ManagementContext;
 import 
org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgentFactory;
 import org.apache.activemq.util.SocketProxy;
 import org.apache.activemq.util.Wait;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.api.Invocation;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.action.CustomAction;
-import org.jmock.lib.legacy.ClassImposteriser;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,9 +35,10 @@ import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.*;
+import static org.mockito.ArgumentMatchers.*;
 
 
-@RunWith(JMock.class)
 public class DiscoveryNetworkReconnectTest {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(DiscoveryNetworkReconnectTest.class);
@@ -56,42 +48,32 @@ public class DiscoveryNetworkReconnectTest {
     final Semaphore mbeanRegistered = new Semaphore(0);
     final Semaphore mbeanUnregistered = new Semaphore(0);
     BrokerService brokerA, brokerB;
-    Mockery context;
     ManagementContext managementContext;
     DiscoveryAgent agent;
     SocketProxy proxy;
 
-    // ignore the hostname resolution component as this is machine dependent
-    class NetworkBridgeObjectNameMatcher<T> extends BaseMatcher<T> {
-        T name;
-        NetworkBridgeObjectNameMatcher(T o) {
+    // ArgumentMatcher for network bridge ObjectNames
+    class NetworkBridgeObjectNameMatcher implements 
ArgumentMatcher<ObjectName> {
+        ObjectName name;
+        NetworkBridgeObjectNameMatcher(ObjectName o) {
             name = o;
         }
 
         @Override
-        public boolean matches(Object arg0) {
-            ObjectName other = (ObjectName) arg0;
-            ObjectName mine = (ObjectName) name;
-            LOG.info("Match: " + mine + " vs: " + other);
+        public boolean matches(ObjectName other) {
+            if (other == null) return false;
+            LOG.info("Match: " + name + " vs: " + other);
 
             if 
(!"networkConnectors".equals(other.getKeyProperty("connector"))) {
                 return false;
             }
-            return 
other.getKeyProperty("connector").equals(mine.getKeyProperty("connector")) &&
-                   other.getKeyProperty("networkBridge") != null && 
mine.getKeyProperty("networkBridge") != null;
-        }
-
-        @Override
-        public void describeTo(Description arg0) {
-            arg0.appendText(this.getClass().getName());
+            return 
other.getKeyProperty("connector").equals(name.getKeyProperty("connector")) &&
+                   other.getKeyProperty("networkBridge") != null && 
name.getKeyProperty("networkBridge") != null;
         }
     }
 
     @Before
     public void setUp() throws Exception {
-        context = new JUnit4Mockery() {{
-            setImposteriser(ClassImposteriser.INSTANCE);
-        }};
         brokerA = new BrokerService();
         brokerA.setBrokerName("BrokerA");
         configure(brokerA);
@@ -100,73 +82,53 @@ public class DiscoveryNetworkReconnectTest {
         brokerA.waitUntilStarted();
 
         proxy = new 
SocketProxy(brokerA.getTransportConnectors().get(0).getConnectUri());
-        managementContext = context.mock(ManagementContext.class);
-
-        context.checking(new Expectations(){{
-            allowing(managementContext).getJmxDomainName(); will 
(returnValue("Test"));
-            allowing(managementContext).setBrokerName("BrokerNC");
-            allowing(managementContext).start();
-            allowing(managementContext).isCreateConnector();
-            allowing(managementContext).stop();
-            allowing(managementContext).isConnectorStarted();
-
-            // expected MBeans
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new ObjectName("Test:type=Broker,brokerName=BrokerNC"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Health"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Log4JConfiguration"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.Connection"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.NetworkBridge"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.MasterBroker"))));
-            allowing(managementContext).registerMBean(with(any(Object.class)), 
with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=jobScheduler,jobSchedulerName=JMS"))));
-            allowing(managementContext).getObjectInstance(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC"))));
-
-
-            atLeast(maxReconnects - 1).of 
(managementContext).registerMBean(with(any(Object.class)), with(new 
NetworkBridgeObjectNameMatcher<ObjectName>(
-                        new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC,networkBridge=localhost/127.0.0.1_"
-                            + proxy.getUrl().getPort())))); will(new 
CustomAction("signal register network mbean") {
-                                @Override
-                                public Object invoke(Invocation invocation) 
throws Throwable {
-                                    LOG.info("Mbean Registered: " + 
invocation.getParameter(0));
-                                    mbeanRegistered.release();
-                                    return new 
ObjectInstance((ObjectName)invocation.getParameter(1), "discription");
-                                }
-                            });
-            atLeast(maxReconnects - 1).of 
(managementContext).unregisterMBean(with(new 
NetworkBridgeObjectNameMatcher<ObjectName>(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC,networkBridge=localhost/127.0.0.1_"
-                            + proxy.getUrl().getPort())))); will(new 
CustomAction("signal unregister network mbean") {
-                                @Override
-                                public Object invoke(Invocation invocation) 
throws Throwable {
-                                    LOG.info("Mbean Unregistered: " + 
invocation.getParameter(0));
-                                    mbeanUnregistered.release();
-                                    return null;
-                                }
-                            });
-
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new ObjectName("Test:type=Broker,brokerName=BrokerNC"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Health"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Log4JConfiguration"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.Connection"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.NetworkBridge"))));
-            allowing(managementContext).unregisterMBean(with(equal(
-                    new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.MasterBroker"))));
-        }});
+        managementContext = mock(ManagementContext.class);
+
+        // Default lenient stubs for ManagementContext
+        
lenient().when(managementContext.getJmxDomainName()).thenReturn("Test");
+        
lenient().doNothing().when(managementContext).setBrokerName("BrokerNC");
+        lenient().doNothing().when(managementContext).start();
+        
lenient().when(managementContext.isCreateConnector()).thenReturn(false);
+        lenient().doNothing().when(managementContext).stop();
+        
lenient().when(managementContext.isConnectorStarted()).thenReturn(false);
+
+        // Expected MBean registrations
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Health")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=Log4JConfiguration")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.Connection")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.NetworkBridge")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,destinationType=Topic,destinationName=ActiveMQ.Advisory.MasterBroker")))).thenReturn(null);
+        lenient().when(managementContext.registerMBean(any(),
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,service=jobScheduler,jobSchedulerName=JMS")))).thenReturn(null);
+        lenient().when(managementContext.getObjectInstance(
+                eq(new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC")))).thenReturn(null);
+
+        // Network bridge MBean register - signal semaphore
+        lenient().when(managementContext.registerMBean(any(), argThat(new 
NetworkBridgeObjectNameMatcher(
+                new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC,networkBridge=localhost/127.0.0.1_"
+                    + proxy.getUrl().getPort()))))).thenAnswer(invocation -> {
+                        LOG.info("Mbean Registered: " + 
invocation.getArgument(0));
+                        mbeanRegistered.release();
+                        return new 
ObjectInstance((ObjectName)invocation.getArgument(1), "discription");
+                    });
+
+        // Network bridge MBean unregister - signal semaphore
+        lenient().doAnswer(invocation -> {
+            LOG.info("Mbean Unregistered: " + invocation.getArgument(0));
+            mbeanUnregistered.release();
+            return null;
+        }).when(managementContext).unregisterMBean(argThat(new 
NetworkBridgeObjectNameMatcher(
+                new 
ObjectName("Test:type=Broker,brokerName=BrokerNC,connector=networkConnectors,networkConnectorName=NC,networkBridge=localhost/127.0.0.1_"
+                        + proxy.getUrl().getPort()))));
 
         brokerB = new BrokerService();
         brokerB.setManagementContext(managementContext);
diff --git a/pom.xml b/pom.xml
index 1b1b54ad93..347e57ce9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,7 +76,6 @@
     <jmdns-version>3.6.3</jmdns-version>
     <javassist-version>3.30.2-GA</javassist-version>
     <jettison-version>1.5.5</jettison-version>
-    <jmock-version>2.13.1</jmock-version>
     <jolokia-version>2.5.1</jolokia-version>
     <junit-version>4.13.2</junit-version>
     <h2-version>2.4.240</h2-version>
@@ -873,18 +872,6 @@
         <version>${mockito-version}</version>
         <scope>test</scope>
       </dependency>
-      <dependency>
-        <groupId>org.jmock</groupId>
-        <artifactId>jmock-junit4</artifactId>
-        <version>${jmock-version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.jmock</groupId>
-        <artifactId>jmock-legacy</artifactId>
-        <version>${jmock-version}</version>
-        <scope>test</scope>
-      </dependency>
       <dependency>
         <groupId>org.hamcrest</groupId>
         <artifactId>hamcrest-all</artifactId>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to