diff --git a/tests/unit/security/pib/pib-data-fixture.hpp b/tests/unit/security/pib/pib-data-fixture.hpp
index 66e7fbf..64c8652 100644
--- a/tests/unit/security/pib/pib-data-fixture.hpp
+++ b/tests/unit/security/pib/pib-data-fixture.hpp
@@ -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).
  *
@@ -35,10 +35,10 @@
 public:
   PibDataFixture();
 
-  NDN_CXX_NODISCARD static shared_ptr<PibImpl>
+  [[nodiscard]] static shared_ptr<PibImpl>
   makePibWithIdentity(const Name& idName);
 
-  NDN_CXX_NODISCARD static shared_ptr<PibImpl>
+  [[nodiscard]] static shared_ptr<PibImpl>
   makePibWithKey(const Name& keyName, span<const uint8_t> key);
 
 public:
diff --git a/tests/unit/util/backports.t.cpp b/tests/unit/util/backports.t.cpp
deleted file mode 100644
index 2404d03..0000000
--- a/tests/unit/util/backports.t.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2013-2020 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx 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
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#include "ndn-cxx/util/backports.hpp"
-
-#include "tests/boost-test.hpp"
-
-namespace ndn {
-namespace tests {
-
-BOOST_AUTO_TEST_SUITE(Util)
-BOOST_AUTO_TEST_SUITE(TestBackports)
-
-BOOST_AUTO_TEST_CASE(Clamp)
-{
-  int x = clamp(5, 1, 10);
-  BOOST_CHECK_EQUAL(x, 5);
-
-  x = clamp(-5, 1, 10);
-  BOOST_CHECK_EQUAL(x, 1);
-
-  x = clamp(15, 1, 10);
-  BOOST_CHECK_EQUAL(x, 10);
-
-  x = clamp(5, 10, 1, std::greater<int>());
-  BOOST_CHECK_EQUAL(x, 5);
-
-  x = clamp(-5, 10, 1, std::greater<int>());
-  BOOST_CHECK_EQUAL(x, 1);
-
-  x = clamp(15, 10, 1, std::greater<int>());
-  BOOST_CHECK_EQUAL(x, 10);
-}
-
-BOOST_AUTO_TEST_SUITE_END() // TestBackports
-BOOST_AUTO_TEST_SUITE_END() // Util
-
-} // namespace tests
-} // namespace ndn
