diff --git a/lib/cpp/test/TFileTransportTest.cpp b/lib/cpp/test/TFileTransportTest.cpp
index 4558344..d402d5d 100644
--- a/lib/cpp/test/TFileTransportTest.cpp
+++ b/lib/cpp/test/TFileTransportTest.cpp
@@ -164,7 +164,7 @@
  * wall-clock time.  This could result in false failures on slower systems, or
  * on heavily loaded machines.
  */
-void test_destructor() {
+BOOST_AUTO_TEST_CASE(test_destructor) {
   TempFile f(tmp_dir, "thrift.TFileTransportTest.");
 
   unsigned int const NUM_ITERATIONS = 1000;
@@ -286,17 +286,17 @@
   }
 }
 
-void test_flush_max_us1() {
+BOOST_AUTO_TEST_CASE(test_flush_max_us1) {
   // fsync every 10ms, write every 5ms, for 500ms
   test_flush_max_us_impl(10000, 5000, 500000);
 }
 
-void test_flush_max_us2() {
+BOOST_AUTO_TEST_CASE(test_flush_max_us2) {
   // fsync every 50ms, write every 20ms, for 500ms
   test_flush_max_us_impl(50000, 20000, 500000);
 }
 
-void test_flush_max_us3() {
+BOOST_AUTO_TEST_CASE(test_flush_max_us3) {
   // fsync every 400ms, write every 300ms, for 1s
   test_flush_max_us_impl(400000, 300000, 1000000);
 }
@@ -307,7 +307,7 @@
  * TFileTransport used to have a bug where flush() would wait for the fsync
  * timeout to expire.
  */
-void test_noop_flush() {
+BOOST_AUTO_TEST_CASE(test_noop_flush) {
   TempFile f(tmp_dir, "thrift.TFileTransportTest.");
   TFileTransport transport(f.getPath());
 
@@ -381,17 +381,10 @@
 }
 
 boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) {
+  boost::unit_test::framework::master_test_suite().p_name.value =
+    "TFileTransportTest";
+
   // Parse arguments
   parse_args(argc, argv);
-
-  boost::unit_test::test_suite* suite =
-    BOOST_TEST_SUITE("TFileTransportTests");
-
-  suite->add(BOOST_TEST_CASE(test_destructor));
-  suite->add(BOOST_TEST_CASE(test_flush_max_us1));
-  suite->add(BOOST_TEST_CASE(test_flush_max_us2));
-  suite->add(BOOST_TEST_CASE(test_flush_max_us3));
-  suite->add(BOOST_TEST_CASE(test_noop_flush));
-
-  return suite;
+  return NULL;
 }
diff --git a/lib/cpp/test/TransportTest.cpp b/lib/cpp/test/TransportTest.cpp
index c42b6ac..dceb708 100644
--- a/lib/cpp/test/TransportTest.cpp
+++ b/lib/cpp/test/TransportTest.cpp
@@ -1037,9 +1037,11 @@
 
   initrand(options.seed);
 
-  boost::unit_test::test_suite* suite = BOOST_TEST_SUITE("TransportTests");
+  boost::unit_test::test_suite* suite =
+    &boost::unit_test::framework::master_test_suite();
+  suite->p_name.value = "TransportTest";
   TransportTestGen transport_test_generator(suite, options.sizeMultiplier);
   transport_test_generator.generate();
 
-  return suite;
+  return NULL;
 }
diff --git a/lib/cpp/test/ZlibTest.cpp b/lib/cpp/test/ZlibTest.cpp
index d2e6252..c9d3f38 100644
--- a/lib/cpp/test/ZlibTest.cpp
+++ b/lib/cpp/test/ZlibTest.cpp
@@ -440,7 +440,9 @@
 unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) {
   parse_args(argc, argv);
 
-  unit_test::test_suite* suite = BOOST_TEST_SUITE("ZlibTests");
+  unit_test::test_suite* suite =
+    &boost::unit_test::framework::master_test_suite();
+  suite->p_name.value = "ZlibTest";
 
   uint32_t buf_len = 1024*32;
   add_tests(suite, gen_uniform_buffer(buf_len, 'a'), buf_len, "uniform");
@@ -449,5 +451,5 @@
 
   suite->add(BOOST_TEST_CASE(test_no_write));
 
-  return suite;
+  return NULL;
 }
