diff --git a/tests-integrated/test-faces.cpp b/tests-integrated/test-faces.cpp
index 03bfa9b..8c48dbb 100644
--- a/tests-integrated/test-faces.cpp
+++ b/tests-integrated/test-faces.cpp
@@ -3,11 +3,11 @@
  * See COPYING for copyright and distribution information.
  */
 
-#include <boost/test/unit_test.hpp>
 #include "face.hpp"
 #include "util/scheduler.hpp"
 
-using namespace std;
+#include "boost-test.hpp"
+
 namespace ndn {
 
 BOOST_AUTO_TEST_SUITE(TestFaces)
@@ -23,7 +23,7 @@
     , regFailedCount(0)
   {
   }
-  
+
   void
   onData()
   {
@@ -100,7 +100,7 @@
   face.expressInterest(Interest("/localhost/non-existing/data/should/not/exist/anywhere", time::milliseconds(50)),
                        ptr_lib::bind(&FacesFixture::onData, this),
                        ptr_lib::bind(&FacesFixture::onTimeout, this));
-  
+
   BOOST_REQUIRE_NO_THROW(face.processEvents());
 
   BOOST_CHECK_EQUAL(dataCount, 1);
@@ -138,7 +138,7 @@
   Scheduler scheduler(*face.ioService());
   scheduler.scheduleEvent(time::milliseconds(300),
                           bind(&FacesFixture::terminate, this, func_lib::ref(face)));
-  
+
   regPrefixId = face.setInterestFilter("/Hello/World",
                                        bind(&FacesFixture::onInterest, this, func_lib::ref(face)),
                                        bind(&FacesFixture::onRegFailed, this));
@@ -146,11 +146,11 @@
   scheduler.scheduleEvent(time::milliseconds(200),
                           bind(&FacesFixture::expressInterest, this,
                                func_lib::ref(face2), Name("/Hello/World/!")));
-  
+
   BOOST_REQUIRE_NO_THROW(face.processEvents());
 
-  BOOST_CHECK_EQUAL(regFailedCount, 0);  
-  BOOST_CHECK_EQUAL(inInterestCount, 1);  
+  BOOST_CHECK_EQUAL(regFailedCount, 0);
+  BOOST_CHECK_EQUAL(inInterestCount, 1);
   BOOST_CHECK_EQUAL(timeoutCount, 1);
   BOOST_CHECK_EQUAL(dataCount, 0);
 }
@@ -162,11 +162,11 @@
   Scheduler scheduler(*face.ioService());
   scheduler.scheduleEvent(time::seconds(1),
                           bind(&FacesFixture::terminate, this, func_lib::ref(face)));
-  
+
   regPrefixId = face.setInterestFilter("/Hello/World",
                                        bind(&FacesFixture::onInterest, this, func_lib::ref(face)),
                                        bind(&FacesFixture::onRegFailed, this));
-  
+
   regPrefixId2 = face.setInterestFilter("/Los/Angeles/Lakers",
                                        bind(&FacesFixture::onInterest2, this, func_lib::ref(face)),
                                        bind(&FacesFixture::onRegFailed, this));
@@ -175,12 +175,12 @@
   scheduler.scheduleEvent(time::milliseconds(200),
                           bind(&FacesFixture::expressInterest, this,
                                func_lib::ref(face2), Name("/Hello/World/!")));
-  
+
   BOOST_REQUIRE_NO_THROW(face.processEvents());
 
-  BOOST_CHECK_EQUAL(regFailedCount, 0);  
-  BOOST_CHECK_EQUAL(inInterestCount, 1);  
-  BOOST_CHECK_EQUAL(inInterestCount2, 0);  
+  BOOST_CHECK_EQUAL(regFailedCount, 0);
+  BOOST_CHECK_EQUAL(inInterestCount, 1);
+  BOOST_CHECK_EQUAL(inInterestCount2, 0);
   BOOST_CHECK_EQUAL(timeoutCount, 1);
   BOOST_CHECK_EQUAL(dataCount, 0);
 }
