diff --git a/tests/unit/mgmt/nfd/controller-fixture.hpp b/tests/unit/mgmt/nfd/controller-fixture.hpp
index 8afee13..38b44fd 100644
--- a/tests/unit/mgmt/nfd/controller-fixture.hpp
+++ b/tests/unit/mgmt/nfd/controller-fixture.hpp
@@ -62,8 +62,8 @@
   ndn::util::DummyClientFace face;
   DummyValidator m_validator;
   Controller controller;
-  Controller::CommandFailureCallback commandFailCallback;
-  Controller::DatasetFailureCallback datasetFailCallback;
+  CommandFailureCallback commandFailCallback;
+  DatasetFailureCallback datasetFailCallback;
   std::vector<uint32_t> failCodes;
 };
 
diff --git a/tests/unit/mgmt/nfd/controller.t.cpp b/tests/unit/mgmt/nfd/controller.t.cpp
index f7f4a9a..d68611f 100644
--- a/tests/unit/mgmt/nfd/controller.t.cpp
+++ b/tests/unit/mgmt/nfd/controller.t.cpp
@@ -47,7 +47,7 @@
   }
 
 protected:
-  Controller::CommandSuccessCallback succeedCallback = [this] (const auto& params) {
+  CommandSuccessCallback succeedCallback = [this] (const auto& params) {
     succeeds.push_back(params);
   };
   std::vector<ControlParameters> succeeds;
diff --git a/tests/unit/mgmt/nfd/status-dataset.t.cpp b/tests/unit/mgmt/nfd/status-dataset.t.cpp
index 633a45d..511498d 100644
--- a/tests/unit/mgmt/nfd/status-dataset.t.cpp
+++ b/tests/unit/mgmt/nfd/status-dataset.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -46,8 +46,6 @@
   void
   sendDataset(const Name& prefix, const T& payload)
   {
-    BOOST_CONCEPT_ASSERT((WireEncodable<T>));
-
     auto data = this->prepareDatasetReply(prefix);
     data->setContent(payload.wireEncode());
     face.receive(*signData(data));
@@ -67,9 +65,6 @@
     // because this test suite focuses on Controller::fetch<StatusDataset>,
     // and is not intended to cover SegmentFetcher behavior.
 
-    BOOST_CONCEPT_ASSERT((WireEncodable<T1>));
-    BOOST_CONCEPT_ASSERT((WireEncodable<T2>));
-
     EncodingBuffer buffer;
     payload2.wireEncode(buffer);
     payload1.wireEncode(buffer);
@@ -80,7 +75,7 @@
   }
 
 private:
-  shared_ptr<Data>
+  std::shared_ptr<Data>
   prepareDatasetReply(const Name& prefix)
   {
     Name name = prefix;
@@ -97,7 +92,7 @@
                          " cannot be satisfied by this Data " << name);
     }
 
-    auto data = make_shared<Data>(name);
+    auto data = std::make_shared<Data>(name);
     data->setFreshnessPeriod(1_s);
     data->setFinalBlock(name[-1]);
     return data;
