diff --git a/tests/other/face-benchmark.cpp b/tests/other/face-benchmark.cpp
index 007a87b..5745c03 100644
--- a/tests/other/face-benchmark.cpp
+++ b/tests/other/face-benchmark.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -94,7 +94,7 @@
     }
 
     if (m_faceUris.empty()) {
-      BOOST_THROW_EXCEPTION(std::runtime_error("No supported FaceUri pairs found in config file"));
+      NDN_THROW(std::runtime_error("No supported FaceUri pairs found in config file"));
     }
   }
 
@@ -159,7 +159,7 @@
   static void
   onFaceCreationFailed(uint32_t status, const std::string& reason)
   {
-    BOOST_THROW_EXCEPTION(std::runtime_error("Failed to create face: " + to_string(status) + ": " + reason));
+    NDN_THROW(std::runtime_error("Failed to create face: [" + to_string(status) + "] " + reason));
   }
 
 private:
diff --git a/tests/other/fw/congestion-mark-strategy.cpp b/tests/other/fw/congestion-mark-strategy.cpp
index 717853f..744608f 100644
--- a/tests/other/fw/congestion-mark-strategy.cpp
+++ b/tests/other/fw/congestion-mark-strategy.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2017,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -41,7 +41,7 @@
   switch (parsed.parameters.size()) {
   case 2:
     if (parsed.parameters.at(1).toUri() != "true" && parsed.parameters.at(1).toUri() != "false") {
-      BOOST_THROW_EXCEPTION(std::invalid_argument(
+      NDN_THROW(std::invalid_argument(
         "Second parameter to CongestionMarkStrategy must be either 'true' or 'false'"));
     }
     m_shouldPreserveMark = parsed.parameters.at(1).toUri() == "true";
@@ -50,22 +50,22 @@
     try {
       auto s = parsed.parameters.at(0).toUri();
       if (!s.empty() && s[0] == '-')
-        BOOST_THROW_EXCEPTION(boost::bad_lexical_cast());
+        NDN_THROW(boost::bad_lexical_cast());
       m_congestionMark = boost::lexical_cast<uint64_t>(s);
     }
     catch (const boost::bad_lexical_cast&) {
-      BOOST_THROW_EXCEPTION(std::invalid_argument(
+      NDN_THROW(std::invalid_argument(
         "First parameter to CongestionMarkStrategy must be a non-negative integer"));
     }
     NDN_CXX_FALLTHROUGH;
   case 0:
     break;
   default:
-    BOOST_THROW_EXCEPTION(std::invalid_argument("CongestionMarkStrategy does not accept more than 2 parameters"));
+    NDN_THROW(std::invalid_argument("CongestionMarkStrategy does not accept more than 2 parameters"));
   }
 
   if (parsed.version && *parsed.version != getStrategyName()[-1].toVersion()) {
-    BOOST_THROW_EXCEPTION(std::invalid_argument(
+    NDN_THROW(std::invalid_argument(
       "CongestionMarkStrategy does not support version " + to_string(*parsed.version)));
   }
   this->setInstanceName(makeInstanceName(name, getStrategyName()));
