diff --git a/tests/rib/rib-manager.cpp b/tests/rib/rib-manager.cpp
index b47e3ab..afef2f3 100644
--- a/tests/rib/rib-manager.cpp
+++ b/tests/rib/rib-manager.cpp
@@ -24,14 +24,12 @@
  */
 
 #include "rib/rib-manager.hpp"
-
-#include "tests/test-common.hpp"
-#include "tests/dummy-client-face.hpp"
-#include "tests/limited-io.hpp"
-
+#include <ndn-cxx/management/nfd-face-status.hpp>
 #include "rib/rib-status-publisher-common.hpp"
 
-#include <ndn-cxx/management/nfd-face-status.hpp>
+#include "tests/test-common.hpp"
+#include "tests/limited-io.hpp"
+#include <ndn-cxx/util/dummy-client-face.hpp>
 
 namespace nfd {
 namespace rib {
@@ -45,13 +43,13 @@
     , ADD_NEXTHOP_VERB("add-nexthop")
     , REMOVE_NEXTHOP_VERB("remove-nexthop")
   {
-    face = nfd::tests::makeDummyClientFace();
+    face = ndn::util::makeDummyClientFace();
 
     manager = make_shared<RibManager>(ndn::ref(*face));
     manager->registerWithNfd();
 
     face->processEvents(time::milliseconds(1));
-    face->m_sentInterests.clear();
+    face->sentInterests.clear();
   }
 
   ~RibManagerFixture()
@@ -83,7 +81,7 @@
 
 public:
   shared_ptr<RibManager> manager;
-  shared_ptr<nfd::tests::DummyClientFace> face;
+  shared_ptr<ndn::util::DummyClientFace> face;
 
   const Name COMMAND_PREFIX;
   const Name::Component ADD_NEXTHOP_VERB;
@@ -133,7 +131,7 @@
 
   receiveCommandInterest(commandName, parameters);
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 1);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 1);
 }
 
 BOOST_FIXTURE_TEST_CASE(Register, AuthorizedRibManager)
@@ -151,9 +149,9 @@
 
   receiveCommandInterest(commandName, parameters);
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 1);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 1);
 
-  Interest& request = face->m_sentInterests[0];
+  Interest& request = face->sentInterests[0];
 
   ControlParameters extractedParameters;
   Name::Component verb;
@@ -179,7 +177,7 @@
   Name registerName("/localhost/nfd/rib/register");
 
   receiveCommandInterest(registerName, addParameters);
-  face->m_sentInterests.clear();
+  face->sentInterests.clear();
 
   ControlParameters removeParameters;
   removeParameters
@@ -191,9 +189,9 @@
 
   receiveCommandInterest(unregisterName, removeParameters);
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 1);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 1);
 
-  Interest& request = face->m_sentInterests[0];
+  Interest& request = face->sentInterests[0];
 
   ControlParameters extractedParameters;
   Name::Component verb;
@@ -217,11 +215,11 @@
 
   Name commandName("/localhost/nfd/rib/register");
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 0);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 0);
 
   receiveCommandInterest(commandName, parameters);
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 0);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 0);
 }
 
 BOOST_FIXTURE_TEST_CASE(RibStatusRequest, AuthorizedRibManager)
@@ -244,17 +242,17 @@
 
   Name commandName("/localhost/nfd/rib/register");
 
-  BOOST_REQUIRE_EQUAL(face->m_sentInterests.size(), 0);
+  BOOST_REQUIRE_EQUAL(face->sentInterests.size(), 0);
 
   receiveCommandInterest(commandName, parameters);
-  face->m_sentInterests.clear();
-  face->m_sentDatas.clear();
+  face->sentInterests.clear();
+  face->sentDatas.clear();
 
   face->receive(Interest("/localhost/nfd/rib/list"));
   face->processEvents(time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->m_sentDatas.size(), 1);
-  RibStatusPublisherFixture::decodeRibEntryBlock(face->m_sentDatas[0], name, entry);
+  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
+  RibStatusPublisherFixture::decodeRibEntryBlock(face->sentDatas[0], name, entry);
 }
 
 BOOST_FIXTURE_TEST_CASE(CancelExpirationEvent, AuthorizedRibManager)
@@ -272,7 +270,7 @@
   Name registerName("/localhost/nfd/rib/register");
 
   receiveCommandInterest(registerName, addParameters);
-  face->m_sentInterests.clear();
+  face->sentInterests.clear();
 
   // Unregister face
   ControlParameters removeParameters;
diff --git a/tests/rib/rib-status-publisher.cpp b/tests/rib/rib-status-publisher.cpp
index 5253bba..b1414cc 100644
--- a/tests/rib/rib-status-publisher.cpp
+++ b/tests/rib/rib-status-publisher.cpp
@@ -24,9 +24,10 @@
  */
 
 #include "rib/rib-status-publisher.hpp"
-
 #include "rib-status-publisher-common.hpp"
-#include "tests/dummy-client-face.hpp"
+
+#include "tests/test-common.hpp"
+#include <ndn-cxx/util/dummy-client-face.hpp>
 
 namespace nfd {
 namespace rib {
@@ -47,14 +48,14 @@
   rib.insert(name, entry);
 
   ndn::KeyChain keyChain;
-  shared_ptr<nfd::tests::DummyClientFace> face = nfd::tests::makeDummyClientFace();
+  shared_ptr<ndn::util::DummyClientFace> face = ndn::util::makeDummyClientFace();
   RibStatusPublisher publisher(rib, *face, "/localhost/nfd/rib/list", keyChain);
 
   publisher.publish();
   face->processEvents(time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->m_sentDatas.size(), 1);
-  decodeRibEntryBlock(face->m_sentDatas[0], name, entry);
+  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
+  decodeRibEntryBlock(face->sentDatas[0], name, entry);
 }
 
 
