diff --git a/CMakeLists.txt b/CMakeLists.txt
index 19dd2bff6..65aa5bdd9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,6 +91,7 @@ set(yaml_static_lib ${yaml_source_dir}/libyaml-cpp.a)
 set(catch_source_dir "${libs_dir}/Catch")
 
 # load cmake modules: cmake/*.cmake
+include(gtest)
 include(gbenchmark)
 
 # build memgraph's cypher grammar
diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake
new file mode 100644
index 000000000..fd32785ae
--- /dev/null
+++ b/cmake/gtest.cmake
@@ -0,0 +1,19 @@
+if (CMAKE_VERSION VERSION_LESS 3.2)
+    set(UPDATE_DISCONNECTED_IF_AVAILABLE "")
+else()
+    set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1")
+endif()
+
+include(DownloadProject/DownloadProject)
+
+download_project(
+    PROJ googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    GIT_TAG master
+    ${UPDATE_DISCONNECTED_IF_AVAILABLE}
+)
+
+add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
+
+include_directories("${googletest_SOURCE_DIR}/googletest/include")
+include_directories("${googletest_SOURCE_DIR}/googlemock/include")