diff --git a/tests/other/benchmark-helpers.hpp b/tests/other/benchmark-helpers.hpp
new file mode 100644
index 0000000..6dc7cf4
--- /dev/null
+++ b/tests/other/benchmark-helpers.hpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014-2017,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NFD_TESTS_OTHER_BENCHMARK_HELPERS_HPP
+#define NFD_TESTS_OTHER_BENCHMARK_HELPERS_HPP
+
+// suppress warnings from Boost.Test
+#pragma GCC system_header
+#pragma clang system_header
+
+#include <boost/test/unit_test.hpp>
+#include <boost/test/output_test_stream.hpp>
+
+#endif // NFD_TESTS_OTHER_BENCHMARK_HELPERS_HPP
diff --git a/tests/other/cs-benchmark.cpp b/tests/other/cs-benchmark.cpp
index c28921b..e9226ef 100644
--- a/tests/other/cs-benchmark.cpp
+++ b/tests/other/cs-benchmark.cpp
@@ -23,8 +23,10 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "benchmark-helpers.hpp"
 #include "table/cs.hpp"
-#include "tests/test-common.hpp"
+
+#include <ndn-cxx/security/signature-sha256-with-rsa.hpp>
 
 #include <iostream>
 
@@ -35,7 +37,7 @@
 namespace nfd {
 namespace tests {
 
-class CsBenchmarkFixture : public BaseFixture
+class CsBenchmarkFixture
 {
 protected:
   CsBenchmarkFixture()
@@ -65,6 +67,17 @@
     return time::duration_cast<time::microseconds>(t2 - t1);
   }
 
+  static shared_ptr<Data>
+  makeData(const Name& name)
+  {
+    auto data = make_shared<Data>(name);
+    ndn::SignatureSha256WithRsa fakeSignature;
+    fakeSignature.setValue(ndn::encoding::makeEmptyBlock(tlv::SignatureValue));
+    data->setSignature(fakeSignature);
+    data->wireEncode();
+    return data;
+  }
+
   void
   find(const Interest& interest)
   {
@@ -102,7 +115,7 @@
     std::vector<shared_ptr<Interest>> workload(count);
     for (size_t i = 0; i < count; ++i) {
       Name name = genName(i);
-      workload[i] = makeInterest(name);
+      workload[i] = make_shared<Interest>(name);
     }
     return workload;
   }
diff --git a/tests/other/pit-fib-benchmark.cpp b/tests/other/pit-fib-benchmark.cpp
index d027c92..58c49ed 100644
--- a/tests/other/pit-fib-benchmark.cpp
+++ b/tests/other/pit-fib-benchmark.cpp
@@ -23,9 +23,9 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "benchmark-helpers.hpp"
 #include "table/fib.hpp"
 #include "table/pit.hpp"
-#include "tests/test-common.hpp"
 
 #include <iostream>
 
@@ -36,7 +36,7 @@
 namespace nfd {
 namespace tests {
 
-class PitFibBenchmarkFixture : public BaseFixture
+class PitFibBenchmarkFixture
 {
 protected:
   PitFibBenchmarkFixture()
