diff --git a/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java b/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
index 934ce7d..597f534 100644
--- a/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
+++ b/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
@@ -103,9 +103,11 @@
         replay(dataStoreService);
 
         allTopologyEvents = new CopyOnWriteArrayList<>();
-        expect(eventChannel.getAllEntries()).andReturn(allTopologyEvents);
-        EasyMock.expectLastCall().anyTimes();
+        expect(eventChannel.getAllEntries())
+            .andReturn(allTopologyEvents).anyTimes();
+    }
 
+    private void setupTopologyManager() {
         // Create a topologyManager object for testing
         topologyListeners = new CopyOnWriteArrayList<>();
         theTopologyManager = new TopologyManager(registryService, topologyListeners);
@@ -129,6 +131,8 @@
         EasyMock.expectLastCall().times(3, 3); // (1 switch + 1 port), 1 port
         replay(eventChannel);
 
+        setupTopologyManager();
+
         // mockSwitch has one port
         Dpid swDPId = new Dpid(100L);
         PortNumber portId = new PortNumber((short) 1);
@@ -162,6 +166,8 @@
         EasyMock.expectLastCall().times(2, 2); //1 switch, 1 port
         replay(eventChannel);
 
+        setupTopologyManager();
+
         Dpid swDPId = new Dpid(100L);
         PortNumber portId = new PortNumber((short) 1);
 
@@ -194,6 +200,8 @@
         EasyMock.expectLastCall().times(1, 1); // 1 device
         replay(eventChannel);
 
+        setupTopologyManager();
+
         long swDPId = 100L;
         long portId = 1L;
 
@@ -222,6 +230,8 @@
         EasyMock.expectLastCall().times(1, 1); // 1 device
         replay(eventChannel);
 
+        setupTopologyManager();
+
         long swDPId = 100L;
         long portId = 1L;
 
@@ -251,6 +261,8 @@
         EasyMock.expectLastCall().times(5, 5); // (2 switch + 2 port + 1 link)
         replay(eventChannel);
 
+        setupTopologyManager();
+
         // Assign the switch and port IDs
         Dpid sw1DPId = new Dpid(100L);
         PortNumber port1Id = new PortNumber((short) 1);
@@ -291,6 +303,8 @@
         EasyMock.expectLastCall().times(1, 1); // (1 link)
         replay(eventChannel);
 
+        setupTopologyManager();
+
         // Assign the switch and port IDs
         Dpid sw1DPId = new Dpid(100L);
         PortNumber port1Id = new PortNumber((short) 1);
