diff --git a/tests/clock-fixture.cpp b/tests/clock-fixture.cpp
index abad20c..5ad70a6 100644
--- a/tests/clock-fixture.cpp
+++ b/tests/clock-fixture.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California
+ * Copyright (c) 2014-2024, Regents of the University of California
  *
  * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
@@ -22,8 +22,8 @@
 namespace ndn::nac::tests {
 
 ClockFixture::ClockFixture()
-  : m_steadyClock(make_shared<time::UnitTestSteadyClock>())
-  , m_systemClock(make_shared<time::UnitTestSystemClock>())
+  : m_steadyClock(std::make_shared<time::UnitTestSteadyClock>())
+  , m_systemClock(std::make_shared<time::UnitTestSystemClock>())
 {
   time::setCustomClocks(m_steadyClock, m_systemClock);
 }
diff --git a/tests/clock-fixture.hpp b/tests/clock-fixture.hpp
index b6b40b1..3e280b5 100644
--- a/tests/clock-fixture.hpp
+++ b/tests/clock-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California
+ * Copyright (c) 2014-2024, Regents of the University of California
  *
  * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
@@ -73,8 +73,8 @@
   }
 
 protected:
-  shared_ptr<time::UnitTestSteadyClock> m_steadyClock;
-  shared_ptr<time::UnitTestSystemClock> m_systemClock;
+  std::shared_ptr<time::UnitTestSteadyClock> m_steadyClock;
+  std::shared_ptr<time::UnitTestSystemClock> m_systemClock;
 };
 
 } // namespace ndn::nac::tests
diff --git a/tests/unit/decryptor.t.cpp b/tests/unit/decryptor.t.cpp
index 14ebedf..8766907 100644
--- a/tests/unit/decryptor.t.cpp
+++ b/tests/unit/decryptor.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2023, Regents of the University of California
+ * Copyright (c) 2014-2024, Regents of the University of California
  *
  * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
@@ -41,10 +41,10 @@
   {
     StaticData data;
     for (const auto& block : data.managerPackets) {
-      m_ims.insert(*make_shared<Data>(block));
+      m_ims.insert(*std::make_shared<Data>(block));
     }
     for (const auto& block : data.encryptorPackets) {
-      m_ims.insert(*make_shared<Data>(block));
+      m_ims.insert(*std::make_shared<Data>(block));
     }
 
     auto serveFromIms = [this] (const Name&, const Interest& interest) {
diff --git a/tests/unit/encrypted-content.t.cpp b/tests/unit/encrypted-content.t.cpp
index 9c1f631..e14da41 100644
--- a/tests/unit/encrypted-content.t.cpp
+++ b/tests/unit/encrypted-content.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2023, Regents of the University of California
+ * Copyright (c) 2014-2024, Regents of the University of California
  *
  * This file is part of NAC (Name-Based Access Control for NDN).
  * See AUTHORS.md for complete list of NAC authors and contributors.
@@ -35,7 +35,7 @@
 public:
   EncryptedContent content;
   Block randomBlock = "01 03 000000"_block;
-  ConstBufferPtr randomBuffer = make_shared<const Buffer>(10);
+  ConstBufferPtr randomBuffer = std::make_shared<const Buffer>(10);
 };
 
 BOOST_FIXTURE_TEST_SUITE(TestEncryptedContent, EncryptedContentFixture)
diff --git a/tests/unit/encryptor.t.cpp b/tests/unit/encryptor.t.cpp
index 4a2e0a9..5c486f7 100644
--- a/tests/unit/encryptor.t.cpp
+++ b/tests/unit/encryptor.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2023, Regents of the University of California
+ * Copyright (c) 2014-2024, Regents of the University of California
  *
  * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
@@ -59,7 +59,7 @@
   {
     StaticData data;
     for (const auto& block : data.managerPackets) {
-      m_ims.insert(*make_shared<Data>(block));
+      m_ims.insert(*std::make_shared<Data>(block));
     }
     advanceClocks(1_ms, 10);
   }
