diff --git a/tests/unit/encoding/block.t.cpp b/tests/unit/encoding/block.t.cpp
index b4f2cf8..8c15e51 100644
--- a/tests/unit/encoding/block.t.cpp
+++ b/tests/unit/encoding/block.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2023 Regents of the University of California.
+ * Copyright (c) 2013-2024 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -256,7 +256,8 @@
   });
 }
 
-BOOST_AUTO_TEST_CASE(FromStreamWhitespace) // Bug 2728
+BOOST_AUTO_TEST_CASE(FromStreamWhitespace,
+  * ut::description("test for bug #2728"))
 {
   const uint8_t PACKET[] = {
     0x06, 0x20, // Data
diff --git a/tests/unit/encoding/buffer-stream.t.cpp b/tests/unit/encoding/buffer-stream.t.cpp
index e505c3d..478bdd8 100644
--- a/tests/unit/encoding/buffer-stream.t.cpp
+++ b/tests/unit/encoding/buffer-stream.t.cpp
@@ -59,7 +59,8 @@
   BOOST_CHECK_EQUAL(buf->at(1), 0x22);
 }
 
-BOOST_AUTO_TEST_CASE(Destructor) // Bug 3727
+BOOST_AUTO_TEST_CASE(Destructor,
+  * ut::description("test for bug #3727"))
 {
   auto os = std::make_unique<OBufferStream>();
   auto buf = os->buf();
@@ -70,7 +71,8 @@
   BOOST_CHECK_EQUAL(buf->size(), 1);
 }
 
-BOOST_AUTO_TEST_CASE(Close) // Bug 5240
+BOOST_AUTO_TEST_CASE(Close,
+  * ut::description("test for bug #5240"))
 {
   OBufferStream os;
   os << "foo";
diff --git a/tests/unit/encoding/nfd-constants.t.cpp b/tests/unit/encoding/nfd-constants.t.cpp
index 6821c44..fc051c4 100644
--- a/tests/unit/encoding/nfd-constants.t.cpp
+++ b/tests/unit/encoding/nfd-constants.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2023 Regents of the University of California.
+ * Copyright (c) 2013-2024 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -73,25 +73,25 @@
 BOOST_AUTO_TEST_CASE(ParseRouteOrigin)
 {
   auto expectSuccess = [] (const std::string& input, RouteOrigin expected) {
-    BOOST_TEST_CONTEXT("input = " << std::quoted(input)) {
-      std::istringstream is(input);
-      RouteOrigin routeOrigin;
-      is >> routeOrigin;
+    BOOST_TEST_INFO_SCOPE("input = " << std::quoted(input));
 
-      BOOST_CHECK(!is.fail());
-      BOOST_CHECK_EQUAL(routeOrigin, expected);
-    }
+    std::istringstream is(input);
+    RouteOrigin routeOrigin;
+    is >> routeOrigin;
+
+    BOOST_CHECK(!is.fail());
+    BOOST_CHECK_EQUAL(routeOrigin, expected);
   };
 
   auto expectFail = [] (const std::string& input) {
-    BOOST_TEST_CONTEXT("input = " << std::quoted(input)) {
-      std::istringstream is(input);
-      RouteOrigin routeOrigin;
-      is >> routeOrigin;
+    BOOST_TEST_INFO_SCOPE("input = " << std::quoted(input));
 
-      BOOST_CHECK(is.fail());
-      BOOST_CHECK_EQUAL(routeOrigin, ROUTE_ORIGIN_NONE);
-    }
+    std::istringstream is(input);
+    RouteOrigin routeOrigin;
+    is >> routeOrigin;
+
+    BOOST_CHECK(is.fail());
+    BOOST_CHECK_EQUAL(routeOrigin, ROUTE_ORIGIN_NONE);
   };
 
   expectSuccess("none", ROUTE_ORIGIN_NONE);
@@ -133,10 +133,10 @@
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(ROUTE_FLAGS_NONE), "none");
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(ROUTE_FLAG_CHILD_INHERIT), "child-inherit");
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(ROUTE_FLAG_CAPTURE), "capture");
-  BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(static_cast<RouteFlags>(
-                    ROUTE_FLAG_CHILD_INHERIT | ROUTE_FLAG_CAPTURE)), "child-inherit|capture");
-  BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(static_cast<RouteFlags>(
-                    ROUTE_FLAG_CAPTURE | 0x9c)), "capture|0x9c");
+  BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(
+                      static_cast<RouteFlags>(ROUTE_FLAG_CHILD_INHERIT | ROUTE_FLAG_CAPTURE)), "child-inherit|capture");
+  BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(
+                      static_cast<RouteFlags>(ROUTE_FLAG_CAPTURE | 0x9c)), "capture|0x9c");
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestNfdConstants
