diff --git a/tests/daemon/face/tcp-factory.t.cpp b/tests/daemon/face/tcp-factory.t.cpp
index 08e4498..5bb4b9f 100644
--- a/tests/daemon/face/tcp-factory.t.cpp
+++ b/tests/daemon/face/tcp-factory.t.cpp
@@ -29,8 +29,6 @@
 #include "factory-test-common.hpp"
 #include "tests/limited-io.hpp"
 
-#include <ndn-cxx/net/address-converter.hpp>
-
 namespace nfd {
 namespace face {
 namespace tests {
@@ -41,7 +39,7 @@
   shared_ptr<TcpChannel>
   createChannel(const std::string& localIp, const std::string& localPort)
   {
-    tcp::Endpoint endpoint(ndn::ip::addressFromString(localIp),
+    tcp::Endpoint endpoint(boost::asio::ip::address::from_string(localIp),
                            boost::lexical_cast<uint16_t>(localPort));
     return factory.createChannel(endpoint);
   }
diff --git a/tests/daemon/face/udp-factory.t.cpp b/tests/daemon/face/udp-factory.t.cpp
index 75767d5..42bfe1d 100644
--- a/tests/daemon/face/udp-factory.t.cpp
+++ b/tests/daemon/face/udp-factory.t.cpp
@@ -29,7 +29,6 @@
 #include "factory-test-common.hpp"
 
 #include <boost/algorithm/string/replace.hpp>
-#include <ndn-cxx/net/address-converter.hpp>
 
 namespace nfd {
 namespace face {
@@ -41,7 +40,7 @@
   shared_ptr<UdpChannel>
   createChannel(const std::string& localIp, uint16_t localPort)
   {
-    udp::Endpoint endpoint(ndn::ip::addressFromString(localIp), localPort);
+    udp::Endpoint endpoint(boost::asio::ip::address::from_string(localIp), localPort);
     return factory.createChannel(endpoint, 5_min);
   }
 };
@@ -74,8 +73,8 @@
   shared_ptr<Face>
   createMulticastFace(const std::string& localIp, const std::string& mcastIp, uint16_t mcastPort)
   {
-    auto localAddress = ndn::ip::addressFromString(localIp);
-    udp::Endpoint mcastEndpoint(ndn::ip::addressFromString(mcastIp), mcastPort);
+    auto localAddress = boost::asio::ip::address::from_string(localIp);
+    udp::Endpoint mcastEndpoint(boost::asio::ip::address::from_string(mcastIp), mcastPort);
 
     if (localAddress.is_v4()) {
       BOOST_ASSERT(!netifsV4.empty());
@@ -128,7 +127,7 @@
   static bool
   isFaceOnNetif(const Face& face, const NetworkInterface& netif)
   {
-    auto ip = ndn::ip::addressFromString(face.getLocalUri().getHost());
+    auto ip = boost::asio::ip::address::from_string(face.getLocalUri().getHost());
     return std::any_of(netif.getNetworkAddresses().begin(), netif.getNetworkAddresses().end(),
                        [ip] (const NetworkAddress& a) { return a.getIp() == ip; });
   }
diff --git a/tests/daemon/face/websocket-factory.t.cpp b/tests/daemon/face/websocket-factory.t.cpp
index b1c38a6..bedef87 100644
--- a/tests/daemon/face/websocket-factory.t.cpp
+++ b/tests/daemon/face/websocket-factory.t.cpp
@@ -28,8 +28,6 @@
 #include "face-system-fixture.hpp"
 #include "factory-test-common.hpp"
 
-#include <ndn-cxx/net/address-converter.hpp>
-
 namespace nfd {
 namespace face {
 namespace tests {
@@ -40,7 +38,7 @@
   shared_ptr<WebSocketChannel>
   createChannel(const std::string& localIp, const std::string& localPort)
   {
-    websocket::Endpoint endpoint(ndn::ip::addressFromString(localIp),
+    websocket::Endpoint endpoint(boost::asio::ip::address::from_string(localIp),
                                  boost::lexical_cast<uint16_t>(localPort));
     return factory.createChannel(endpoint);
   }
diff --git a/tests/other/face-benchmark.cpp b/tests/other/face-benchmark.cpp
index 3499e89..007a87b 100644
--- a/tests/other/face-benchmark.cpp
+++ b/tests/other/face-benchmark.cpp
@@ -29,7 +29,6 @@
 #include "face/tcp-channel.hpp"
 #include "face/udp-channel.hpp"
 
-#include <ndn-cxx/net/address-converter.hpp>
 #include <fstream>
 #include <iostream>
 
@@ -125,7 +124,7 @@
     }
 
     // create the right face
-    auto addr = ndn::ip::addressFromString(uriR.getHost());
+    auto addr = boost::asio::ip::address::from_string(uriR.getHost());
     auto port = boost::lexical_cast<uint16_t>(uriR.getPort());
     if (uriR.getScheme() == "tcp4") {
       m_tcpChannel.connect(tcp::Endpoint(addr, port), {},
