diff --git a/CMakeLists_test_template.txt b/CMakeLists_test_template.txt
new file mode 100755
index 0000000000000000000000000000000000000000..8470b4a461e235fa56715d60687a5c9a01eee631
--- /dev/null
+++ b/CMakeLists_test_template.txt
@@ -0,0 +1,78 @@
+# Pre-requisites about cmake itself
+CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
+
+if(COMMAND cmake_policy)
+  cmake_policy(SET CMP0005 NEW) 
+  cmake_policy(SET CMP0003 NEW)
+   
+endif(COMMAND cmake_policy)
+
+# The project name and the type of project
+PROJECT(project_name)
+
+SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
+SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+SET(CMAKE_INSTALL_PREFIX /usr/local)
+
+IF (NOT CMAKE_BUILD_TYPE)
+ SET(CMAKE_BUILD_TYPE "DEBUG") 
+ENDIF (NOT CMAKE_BUILD_TYPE)
+
+SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -D_REENTRANT")
+SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -D_REENTRANT -O0 --coverage -fprofile-arcs")
+SET(CMAKE_LINK_FLAGS_DEBUG "--coverage -fprofile-arcs")
+
+#
+# Add ctest
+#
+INCLUDE(CTest)
+
+ADD_SUBDIRECTORY(src)
+
+ADD_SUBDIRECTORY(test/gtest)
+
+ADD_SUBDIRECTORY(test)
+
+FIND_PACKAGE(Doxygen)
+
+FIND_PATH(IRI_DOC_DIR doxygen.conf ${CMAKE_SOURCE_DIR}/doc/iri_doc/)
+IF (IRI_DOC_DIR)
+  ADD_CUSTOM_TARGET (doc ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doc/iri_doc/doxygen.conf)
+ELSE (IRI_DOC_DIR)
+  ADD_CUSTOM_TARGET (doc ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doc/doxygen.conf)
+ENDIF (IRI_DOC_DIR)
+
+ADD_CUSTOM_TARGET (distclean @echo cleaning cmake files)
+
+IF (UNIX)
+  ADD_CUSTOM_COMMAND(
+    COMMENT "distribution clean"
+    COMMAND make ARGS clean
+    COMMAND rm ARGS -rf ${CMAKE_SOURCE_DIR}/build/*
+
+    TARGET  distclean
+  )
+ELSE(UNIX)
+  ADD_CUSTOM_COMMAND(
+    COMMENT "distclean only implemented in unix"
+    TARGET  distclean
+  )
+ENDIF(UNIX)
+
+ADD_CUSTOM_TARGET (uninstall @echo uninstall package)
+
+IF (UNIX)
+  ADD_CUSTOM_COMMAND(
+    COMMENT "uninstall package"
+    COMMAND xargs ARGS rm < install_manifest.txt
+
+    TARGET  uninstall
+  )
+ELSE(UNIX)
+  ADD_CUSTOM_COMMAND(
+    COMMENT "uninstall only implemented in unix"
+    TARGET  uninstall
+  )
+ENDIF(UNIX)
+
+
diff --git a/new_project.sh b/new_project.sh
index c190604bda99331610e77d62a86344fcb70594a0..bc883f486fd78d294ab5efeb8d163e87b2f3d895 100755
--- a/new_project.sh
+++ b/new_project.sh
@@ -4,8 +4,9 @@ DEP=
 TYPE=
 PROJECT_NAME=
 NAME=
+TEST=0
 
-while getopts “t:p:n:d” OPTION
+while getopts “t:p:n:dg” OPTION
 do
   case $OPTION in
     t)
@@ -20,6 +21,9 @@ do
     d)
        DEP=$OPTARG
        ;;
+    g)
+       TEST=1
+       ;;
     ?)
        echo invalid argument $OPTION
        exit
@@ -155,7 +159,13 @@ rm ReadMe_template.md
 
 #Set the project name on the CMakeLists.txt script file
 NEW_NAME=$(echo $NAME | sed 's/_/-/g')
-sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_template.txt >./CMakeLists.txt
+if [ $TEST = 1 ]
+then
+  sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_test_template.txt >./CMakeLists.txt
+else
+  sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_template.txt >./CMakeLists.txt
+fi
+rm CMakeLists_test_template.txt
 rm CMakeLists_template.txt
 
 #Set the project name on the doxygen_project_name.dox sript file
@@ -251,6 +261,20 @@ else
   sed 's/library_name/'$NAME'/g' <driver_example_src_template.cpp >./src/examples/${NAME}_test.cpp
   rm application_src_template.cpp
 fi
+
+if [ $TEST = 1 ]
+then
+  Library_name=$(echo $NAME | sed 's/\([a-zA-Z]\)\([a-zA-Z0-9]*\)/\u\1\2/g')
+  sed 's/library_name/'$NEW_NAME'/g' <./test/CMakeLists_template.txt >./test/tmp.txt 
+  sed 's/Library_name/'$Library_name'/g' <./test/tmp.txt >./test/CMakeLists.txt
+  rm ./test/CMakeLists_template.txt
+  rm ./test/tmp.txt
+  sed 's/library_name/'$NAME'/g' <./test/test_template.cpp >./test/${NAME}_test.cpp
+  rm ./test/test_template.cpp
+else
+  rm -rf test  
+fi
+
 rm driver_src_template.cpp
 rm driver_header_template.h
 rm driver_example_src_template.cpp
diff --git a/test/CMakeLists_template.txt b/test/CMakeLists_template.txt
new file mode 100644
index 0000000000000000000000000000000000000000..873a4e031d2ad3c6a26f68e9c4e0936fa2eda553
--- /dev/null
+++ b/test/CMakeLists_template.txt
@@ -0,0 +1,15 @@
+include_directories(${GTEST_INCLUDE_DIRS})
+include_directories(${GMOCK_INCLUDE_DIRS})
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+
+set(CTEST_CUSTOM_COVERAGE_EXCLUDE *)
+
+add_executable(library_name_tests library_name_test.cpp)
+add_dependencies(library_name_tests googletest)
+
+target_link_libraries(library_name_tests ${GTEST_LIBS_DIR}/libgtest.a ${GTEST_LIBS_DIR}/libgtest_main.a)
+target_link_libraries(library_name_tests ${GMOCK_LIBS_DIR}/libgmock.a ${GMOCK_LIBS_DIR}/libgmock_main.a)
+target_link_libraries(library_name_tests pthread)
+
+add_test(NAME Library_name_Test COMMAND library_name_tests)
diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b7d7826b235fd3c362e72a871d6fd45a77d22c6
--- /dev/null
+++ b/test/gtest/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 2.8.8)
+project(gtest_builder C CXX)
+include(ExternalProject)
+
+ExternalProject_Add(googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
+               -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
+               -DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS}
+               -Dgtest_force_shared_crt=ON
+               -DBUILD_GTEST=ON
+     PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
+# Disable install step
+    INSTALL_COMMAND ""
+)
+
+# Specify include dir
+ExternalProject_Get_Property(googletest source_dir)
+set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE)
+set(GMOCK_INCLUDE_DIRS  ${source_dir}/googlemock/include PARENT_SCOPE)
+
+# Specify MainTest's link libraries
+ExternalProject_Get_Property(googletest binary_dir)
+set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE)
+set(GMOCK_LIBS_DIR ${binary_dir}/googlemock PARENT_SCOPE)
+
+
+
diff --git a/test/test_template.cpp b/test/test_template.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..763f10b9a66b758d8a14e9a4ab37a3a346749b34
--- /dev/null
+++ b/test/test_template.cpp
@@ -0,0 +1,11 @@
+// tests.cpp
+#include <library_name.h>
+#include <gtest/gtest.h>
+ 
+TEST(library_nameTest, test1) { 
+}
+ 
+int main(int argc, char **argv) {
+    testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}