diff --git a/tests/route/test-fib.cpp b/tests/route/test-fib.cpp
index 5c75314..9da37de 100644
--- a/tests/route/test-fib.cpp
+++ b/tests/route/test-fib.cpp
@@ -22,21 +22,20 @@
 #include "adjacency-list.hpp"
 #include "conf-parameter.hpp"
 
-#include "../test-common.hpp"
-#include "../control-commands.hpp"
+#include "tests/boost-test.hpp"
+#include "tests/io-key-chain-fixture.hpp"
 
+#include <ndn-cxx/mgmt/nfd/control-parameters.hpp>
 #include <ndn-cxx/util/dummy-client-face.hpp>
 
 namespace nlsr {
 namespace test {
 
-class FibFixture : public UnitTestTimeFixture
+class FibFixture : public IoKeyChainFixture
 {
 public:
   FibFixture()
-    : face(m_ioService, m_keyChain)
-    , conf(face, m_keyChain)
-    , adjacencies(conf.getAdjacencyList())
+    : adjacencies(conf.getAdjacencyList())
     , fib(face, m_scheduler, adjacencies, conf, m_keyChain)
     , interests(face.sentInterests)
   {
@@ -58,7 +57,8 @@
   }
 
   void
-  enableRegistrationReplyWithFaceId() {
+  enableRegistrationReplyWithFaceId()
+  {
     face.onSendInterest.connect([this] (const ndn::Interest& interest) {
       static const ndn::Name localhostRegistration("/localhost/nfd/rib");
       if (!localhostRegistration.isPrefixOf(interest.getName()))
@@ -86,10 +86,25 @@
     });
   }
 
-public:
-  ndn::util::DummyClientFace face;
+  static void
+  extractRibCommandParameters(const ndn::Interest& interest, ndn::Name::Component& verb,
+                              ndn::nfd::ControlParameters& extractedParameters)
+  {
+    static const ndn::Name commandPrefix("/localhost/nfd/rib");
 
-  ConfParameter conf;
+    const auto& name = interest.getName();
+    verb = name.at(commandPrefix.size());
+    const auto& paramComponent = name.at(commandPrefix.size() + 1);
+    extractedParameters.wireDecode(paramComponent.blockFromValue());
+  }
+
+private:
+  ndn::Scheduler m_scheduler{m_io};
+
+public:
+  ndn::util::DummyClientFace face{m_io, m_keyChain};
+
+  ConfParameter conf{face, m_keyChain};
   AdjacencyList& adjacencies;
   Fib fib;
   std::vector<ndn::Interest>& interests;
@@ -402,7 +417,7 @@
   int numRegister = 0;
   // Do not expect any unregisters, just registers which will update the cost in NFD
   for (const auto& i : face.sentInterests) {
-    if (i.getName().getPrefix(4) == "/localhost/nfd/rib/unregister/") {
+    if (i.getName().getPrefix(4) == "/localhost/nfd/rib/unregister") {
       BOOST_CHECK(false);
     }
     else {
diff --git a/tests/route/test-hyperbolic-calculator.cpp b/tests/route/test-hyperbolic-calculator.cpp
index 30f8ced..f830c94 100644
--- a/tests/route/test-hyperbolic-calculator.cpp
+++ b/tests/route/test-hyperbolic-calculator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020,  The University of Memphis,
+ * Copyright (c) 2014-2022,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -19,8 +19,6 @@
  * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "../test-common.hpp"
-
 #include "route/routing-table-calculator.hpp"
 
 #include "adjacency-list.hpp"
@@ -29,7 +27,8 @@
 #include "route/map.hpp"
 #include "route/routing-table.hpp"
 
-#include <ndn-cxx/util/dummy-client-face.hpp>
+#include "tests/io-key-chain-fixture.hpp"
+#include "tests/test-common.hpp"
 
 namespace nlsr {
 namespace test {
@@ -38,11 +37,11 @@
 using ndn::time::system_clock;
 static const system_clock::TimePoint MAX_TIME = system_clock::TimePoint::max();
 
-class HyperbolicCalculatorFixture : public BaseFixture
+class HyperbolicCalculatorFixture : public IoKeyChainFixture
 {
 public:
   HyperbolicCalculatorFixture()
-    : face(m_ioService, m_keyChain)
+    : face(m_io, m_keyChain)
     , conf(face, m_keyChain)
     , nlsr(face, m_keyChain, conf)
     , routingTable(nlsr.m_routingTable)
diff --git a/tests/route/test-link-state-calculator.cpp b/tests/route/test-link-state-calculator.cpp
index 057b1c8..46c27fe 100644
--- a/tests/route/test-link-state-calculator.cpp
+++ b/tests/route/test-link-state-calculator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020,  The University of Memphis,
+ * Copyright (c) 2014-2022,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -22,14 +22,14 @@
 #include "route/routing-table-calculator.hpp"
 
 #include "adjacency-list.hpp"
+#include "adjacent.hpp"
 #include "lsdb.hpp"
 #include "nlsr.hpp"
-#include "../test-common.hpp"
 #include "route/map.hpp"
 #include "route/routing-table.hpp"
-#include "adjacent.hpp"
 
-#include <ndn-cxx/util/dummy-client-face.hpp>
+#include "tests/io-key-chain-fixture.hpp"
+#include "tests/test-common.hpp"
 
 namespace nlsr {
 namespace test {
@@ -37,11 +37,11 @@
 static const ndn::time::system_clock::TimePoint MAX_TIME =
   ndn::time::system_clock::TimePoint::max();
 
-class LinkStateCalculatorFixture : public BaseFixture
+class LinkStateCalculatorFixture : public IoKeyChainFixture
 {
 public:
   LinkStateCalculatorFixture()
-    : face(m_ioService, m_keyChain)
+    : face(m_io, m_keyChain)
     , conf(face, m_keyChain)
     , confProcessor(conf)
     , nlsr(face, m_keyChain, conf)
diff --git a/tests/route/test-name-prefix-table.cpp b/tests/route/test-name-prefix-table.cpp
index fbe6c5a..9c9833f 100644
--- a/tests/route/test-name-prefix-table.cpp
+++ b/tests/route/test-name-prefix-table.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2022,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -23,21 +23,18 @@
 #include "route/fib.hpp"
 #include "route/routing-table.hpp"
 #include "lsdb.hpp"
-#include "../test-common.hpp"
 
-#include <ndn-cxx/util/dummy-client-face.hpp>
+#include "tests/io-key-chain-fixture.hpp"
+#include "tests/test-common.hpp"
 
 namespace nlsr {
 namespace test {
 
-class NamePrefixTableFixture : public UnitTestTimeFixture
+class NamePrefixTableFixture : public IoKeyChainFixture
 {
 public:
   NamePrefixTableFixture()
-    : face(m_ioService, m_keyChain)
-    , conf(face, m_keyChain)
-    , confProcessor(conf)
-    , lsdb(face, m_keyChain, conf)
+    : lsdb(face, m_keyChain, conf)
     , fib(face, m_scheduler, conf.getAdjacencyList(), conf, m_keyChain)
     , rt(m_scheduler, lsdb, conf)
     , npt(conf.getRouterPrefix(), fib, rt, rt.afterRoutingChange, lsdb.onLsdbModified)
@@ -52,10 +49,13 @@
     return it != npt.end();
   }
 
+private:
+  ndn::Scheduler m_scheduler{m_io};
+
 public:
-  ndn::util::DummyClientFace face;
-  ConfParameter conf;
-  DummyConfFileProcessor confProcessor;
+  ndn::util::DummyClientFace face{m_io, m_keyChain};
+  ConfParameter conf{face, m_keyChain};
+  DummyConfFileProcessor confProcessor{conf};
 
   Lsdb lsdb;
   Fib fib;
diff --git a/tests/route/test-routing-table.cpp b/tests/route/test-routing-table.cpp
index 5624ad8..15ad958 100644
--- a/tests/route/test-routing-table.cpp
+++ b/tests/route/test-routing-table.cpp
@@ -23,30 +23,24 @@
 #include "route/routing-table-entry.hpp"
 #include "route/nexthop.hpp"
 
+#include "tests/io-key-chain-fixture.hpp"
 #include "tests/test-common.hpp"
 
 namespace nlsr {
 namespace test {
 
-class RoutingTableFixture : public UnitTestTimeFixture
+class RoutingTableFixture : public IoKeyChainFixture
 {
-public:
-  RoutingTableFixture()
-    : face(m_ioService, m_keyChain, {true, true})
-    , conf(face, m_keyChain)
-    , confProcessor(conf)
-    , lsdb(face, m_keyChain, conf)
-    , rt(m_scheduler, lsdb, conf)
-  {
-  }
+private:
+  ndn::Scheduler m_scheduler{m_io};
 
 public:
-  ndn::util::DummyClientFace face;
-  ConfParameter conf;
-  DummyConfFileProcessor confProcessor;
+  ndn::util::DummyClientFace face{m_io, m_keyChain, {true, true}};
+  ConfParameter conf{face, m_keyChain};
+  DummyConfFileProcessor confProcessor{conf};
 
-  Lsdb lsdb;
-  RoutingTable rt;
+  Lsdb lsdb{face, m_keyChain, conf};
+  RoutingTable rt{m_scheduler, lsdb, conf};
 };
 
 BOOST_AUTO_TEST_SUITE(TestRoutingTable)
