diff --git a/tests/integrated/test-faces.cpp b/tests/integrated/face.cpp
similarity index 98%
rename from tests/integrated/test-faces.cpp
rename to tests/integrated/face.cpp
index 0cb34eb..2666c48 100644
--- a/tests/integrated/test-faces.cpp
+++ b/tests/integrated/face.cpp
@@ -19,6 +19,10 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
+#define BOOST_TEST_MAIN 1
+#define BOOST_TEST_DYN_LINK 1
+#define BOOST_TEST_MODULE ndn-cxx Integrated Tests (Face)
+
 #include "face.hpp"
 #include "util/scheduler.hpp"
 #include "security/key-chain.hpp"
diff --git a/tests/integrated/network-monitor.cpp b/tests/integrated/network-monitor.cpp
new file mode 100644
index 0000000..9ed4bb3
--- /dev/null
+++ b/tests/integrated/network-monitor.cpp
@@ -0,0 +1,56 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2015 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#define BOOST_TEST_MAIN 1
+#define BOOST_TEST_DYN_LINK 1
+#define BOOST_TEST_MODULE ndn-cxx Integrated Tests (Network Monitor)
+
+#include "util/network-monitor.hpp"
+
+#include "boost-test.hpp"
+#include <cstdlib>
+#include <iostream>
+#include "util/time.hpp"
+
+namespace ndn {
+namespace util {
+
+BOOST_AUTO_TEST_SUITE(UtilNetworkMonitor)
+
+BOOST_AUTO_TEST_CASE(Basic)
+{
+  boost::asio::io_service io;
+  BOOST_REQUIRE_NO_THROW((NetworkMonitor(io)));
+
+  NetworkMonitor monitor(io);
+
+  monitor.onNetworkStateChanged.connect([] {
+      std::cout << time::toString(time::system_clock::now())
+                << "\tReceived network state change event" << std::endl;
+    });
+
+  io.run();
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace util
+} // namespace ndn
diff --git a/tests/integrated/wscript b/tests/integrated/wscript
index d5d9af7..311059d 100644
--- a/tests/integrated/wscript
+++ b/tests/integrated/wscript
@@ -5,25 +5,16 @@
 top = '..'
 
 def build(bld):
-    unittests = bld(
-        target="integrated-test-objects",
-        name="integrated-test-objects",
-        features="cxx",
-        source=bld.path.ant_glob(['**/*.cpp'],
-                                 excl=['main.cpp', '**/*-osx.cpp', '**/*-sqlite3.cpp']),
-        use='tests-base',
-        includes='.',
-        install_path=None,
-        )
+    bld(features="cxx cxxprogram",
+        target="face",
+        source="face.cpp",
+        use='ndn-cxx boost-tests-base BOOST',
+        includes='..',
+        install_path=None)
 
-    if bld.env['HAVE_OSX_SECURITY']:
-        unittests.source += bld.path.ant_glob('**/*-osx.cpp')
-
-    # In case we want to make it optional later
-    unittests.source += bld.path.ant_glob('**/*-sqlite3.cpp')
-
-    bld.program(
-        target="../integrated-tests",
-        use="integrated-test-objects",
-        source="main.cpp",
+    bld(features="cxx cxxprogram",
+        target="network-monitor",
+        source="network-monitor.cpp",
+        use='ndn-cxx boost-tests-base BOOST',
+        includes='..',
         install_path=None)
