diff --git a/tests/unit/net/dns.t.cpp b/tests/unit/net/dns.t.cpp
index c1e8679..b28d6ed 100644
--- a/tests/unit/net/dns.t.cpp
+++ b/tests/unit/net/dns.t.cpp
@@ -36,10 +36,8 @@
 {
 public:
   void
-  onSuccess(const boost::asio::ip::address& resolvedAddress,
-            const boost::asio::ip::address& expectedAddress,
-            bool isValid,
-            bool shouldCheckAddress = false)
+  onSuccess(const ip::address& resolvedAddress, const ip::address& expectedAddress,
+            bool isValid, bool shouldCheckAddress = false)
   {
     ++m_nSuccesses;
 
@@ -72,10 +70,9 @@
 BOOST_AUTO_TEST_SUITE(Net)
 BOOST_FIXTURE_TEST_SUITE(TestDns, DnsFixture)
 
-BOOST_AUTO_TEST_CASE(Failure)
+BOOST_AUTO_TEST_CASE(Failure,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv4OrIpv6))
 {
-  SKIP_IF_IP_UNAVAILABLE();
-
   asyncResolve("nothost.nothost.nothost.arpa",
                std::bind(&DnsFixture::onSuccess, this, _1, ip::address_v4(), false, false),
                [this] (auto&&...) { onFailure(true); },
@@ -86,10 +83,9 @@
   BOOST_CHECK_EQUAL(m_nSuccesses, 0);
 }
 
-BOOST_AUTO_TEST_CASE(Ipv4)
+BOOST_AUTO_TEST_CASE(Ipv4,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv4))
 {
-  SKIP_IF_IPV4_UNAVAILABLE();
-
   asyncResolve("192.0.2.1",
                std::bind(&DnsFixture::onSuccess, this, _1, ip::make_address_v4("192.0.2.1"), true, true),
                [this] (auto&&...) { onFailure(false); },
@@ -100,10 +96,9 @@
   BOOST_CHECK_EQUAL(m_nSuccesses, 1);
 }
 
-BOOST_AUTO_TEST_CASE(Ipv6)
+BOOST_AUTO_TEST_CASE(Ipv6,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv6))
 {
-  SKIP_IF_IPV6_UNAVAILABLE();
-
   asyncResolve("ipv6.google.com", // only IPv6 address should be available
                std::bind(&DnsFixture::onSuccess, this, _1, ip::address_v6(), true, false),
                [this] (auto&&...) { onFailure(false); },
@@ -120,11 +115,10 @@
   BOOST_CHECK_EQUAL(m_nSuccesses, 2);
 }
 
-BOOST_AUTO_TEST_CASE(WithAddressSelector)
+BOOST_AUTO_TEST_CASE(WithAddressSelector,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv4)
+  * ut::precondition(NetworkConfigurationDetector::hasIpv6))
 {
-  SKIP_IF_IPV4_UNAVAILABLE();
-  SKIP_IF_IPV6_UNAVAILABLE();
-
   asyncResolve("named-data.net",
                std::bind(&DnsFixture::onSuccess, this, _1, ip::address_v4(), true, false),
                [this] (auto&&...) { onFailure(false); },
diff --git a/tests/unit/net/face-uri.t.cpp b/tests/unit/net/face-uri.t.cpp
index f306a94..e1b7ee9 100644
--- a/tests/unit/net/face-uri.t.cpp
+++ b/tests/unit/net/face-uri.t.cpp
@@ -208,10 +208,9 @@
 }
 
 BOOST_FIXTURE_TEST_CASE(CanonizeUdpV4, CanonizeFixture,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv4)
   * ut::expected_failures(1))
 {
-  SKIP_IF_IPV4_UNAVAILABLE();
-
   // IPv4 unicast
   runTest("udp4://192.0.2.1:6363", true, "udp4://192.0.2.1:6363");
   runTest("udp://192.0.2.2:6363", true, "udp4://192.0.2.2:6363");
@@ -236,10 +235,9 @@
 }
 
 BOOST_FIXTURE_TEST_CASE(CanonizeUdpV6, CanonizeFixture,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv6)
   * ut::expected_failures(1))
 {
-  SKIP_IF_IPV6_UNAVAILABLE();
-
   // IPv6 unicast
   runTest("udp6://[2001:db8::1]:6363", true, "udp6://[2001:db8::1]:6363");
   runTest("udp6://[2001:db8::1]", true, "udp6://[2001:db8::1]:6363");
@@ -338,10 +336,9 @@
 }
 
 BOOST_FIXTURE_TEST_CASE(CanonizeTcpV4, CanonizeFixture,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv4)
   * ut::expected_failures(1))
 {
-  SKIP_IF_IPV4_UNAVAILABLE();
-
   // IPv4 unicast
   runTest("tcp4://192.0.2.1:6363", true, "tcp4://192.0.2.1:6363");
   runTest("tcp://192.0.2.2:6363", true, "tcp4://192.0.2.2:6363");
@@ -377,10 +374,9 @@
 }
 
 BOOST_FIXTURE_TEST_CASE(CanonizeTcpV6, CanonizeFixture,
+  * ut::precondition(NetworkConfigurationDetector::hasIpv6)
   * ut::expected_failures(1))
 {
-  SKIP_IF_IPV6_UNAVAILABLE();
-
   // IPv6 unicast
   runTest("tcp6://[2001:db8::1]:6363", true, "tcp6://[2001:db8::1]:6363");
   runTest("tcp6://[2001:db8::1]", true, "tcp6://[2001:db8::1]:6363");
diff --git a/tests/unit/net/network-configuration-detector.cpp b/tests/unit/net/network-configuration-detector.cpp
index 44cae39..e9b39df 100644
--- a/tests/unit/net/network-configuration-detector.cpp
+++ b/tests/unit/net/network-configuration-detector.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).
  *
@@ -27,36 +27,23 @@
 
 namespace ndn::tests {
 
-bool
-NetworkConfigurationDetector::hasIpv4()
-{
-  if (!s_isInitialized) {
-    detect();
-  }
-  return s_hasIpv4;
-}
-
-bool
-NetworkConfigurationDetector::hasIpv6()
-{
-  if (!s_isInitialized) {
-    detect();
-  }
-  return s_hasIpv6;
-}
-
 void
 NetworkConfigurationDetector::detect()
 {
+  static bool isInitialized = false;
+  if (isInitialized) {
+    return;
+  }
+
   boost::asio::io_context io;
   boost::asio::ip::udp::resolver resolver(io);
 
   boost::system::error_code ec;
-  // The specified hostname must have both A and AAAA records
+  // Use a hostname known to have both A and AAAA records
   auto results = resolver.resolve("a.root-servers.net", "", ec);
-
   if (!ec) {
     for (const auto& i : results) {
+      s_hasIp = true;
       if (i.endpoint().address().is_v4()) {
         s_hasIpv4 = true;
       }
@@ -65,7 +52,17 @@
       }
     }
   }
-  s_isInitialized = true;
+
+  if (!s_hasIp) {
+    s_hasIp.message() << "IP connectivity is unavailable";
+  }
+  if (!s_hasIpv4) {
+    s_hasIpv4.message() << "IPv4 connectivity is unavailable";
+  }
+  if (!s_hasIpv6) {
+    s_hasIpv6.message() << "IPv6 connectivity is unavailable";
+  }
+  isInitialized = true;
 }
 
 } // namespace ndn::tests
diff --git a/tests/unit/net/network-configuration-detector.hpp b/tests/unit/net/network-configuration-detector.hpp
index 7264e68..58abba0 100644
--- a/tests/unit/net/network-configuration-detector.hpp
+++ b/tests/unit/net/network-configuration-detector.hpp
@@ -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).
  *
@@ -22,50 +22,42 @@
 #ifndef NDN_CXX_TESTS_UNIT_NET_NETWORK_CONFIGURATION_DETECTOR_HPP
 #define NDN_CXX_TESTS_UNIT_NET_NETWORK_CONFIGURATION_DETECTOR_HPP
 
-#define SKIP_IF_IPV4_UNAVAILABLE() \
-  do { \
-    if (!::ndn::tests::NetworkConfigurationDetector::hasIpv4()) { \
-      BOOST_WARN_MESSAGE(false, "skipping assertions that require IPv4 support"); \
-      return; \
-    } \
-  } while (false)
-
-#define SKIP_IF_IPV6_UNAVAILABLE() \
-  do { \
-    if (!::ndn::tests::NetworkConfigurationDetector::hasIpv6()) { \
-      BOOST_WARN_MESSAGE(false, "skipping assertions that require IPv6 support"); \
-      return; \
-    } \
-  } while (false)
-
-#define SKIP_IF_IP_UNAVAILABLE() \
-  do { \
-    if (!::ndn::tests::NetworkConfigurationDetector::hasIpv4() && \
-        !::ndn::tests::NetworkConfigurationDetector::hasIpv6()) { \
-      BOOST_WARN_MESSAGE(false, "skipping assertions that require either IPv4 or IPv6 support"); \
-      return; \
-    } \
-  } while (false)
+#include "tests/boost-test.hpp"
 
 namespace ndn::tests {
 
 class NetworkConfigurationDetector
 {
 public:
-  static bool
-  hasIpv4();
+  static boost::test_tools::assertion_result
+  hasIpv4(ut::test_unit_id = {})
+  {
+    detect();
+    return s_hasIpv4;
+  }
 
-  static bool
-  hasIpv6();
+  static boost::test_tools::assertion_result
+  hasIpv6(ut::test_unit_id = {})
+  {
+    detect();
+    return s_hasIpv6;
+  }
+
+  static boost::test_tools::assertion_result
+  hasIpv4OrIpv6(ut::test_unit_id = {})
+  {
+    detect();
+    return s_hasIp;
+  }
 
 private:
   static void
   detect();
 
 private:
-  static inline bool s_isInitialized = false;
-  static inline bool s_hasIpv4 = false;
-  static inline bool s_hasIpv6 = false;
+  static inline boost::test_tools::assertion_result s_hasIp = false;
+  static inline boost::test_tools::assertion_result s_hasIpv4 = false;
+  static inline boost::test_tools::assertion_result s_hasIpv6 = false;
 };
 
 } // namespace ndn::tests
