35

I want to run the sample tests and debug the Google Test project. I am using VS Code on Ubuntu 16.04 LTS.

  • I cloned the project locally at /home/user/Desktop/projects/cpp/googletest,
  • created a new directory called mybuild at /home/user/Desktop/projects/cpp/mybuild.
  • According to the README instructions here: https://github.com/google/googletest/tree/master/googletest I used the command, cmake -Dgtest_build_samples=ON /home/user/Desktop/projects/cpp/googletest to build the project and this generated a bunch of files and apparently the build succeeded.

Now, I have 2 problems:

  1. How do I run the sample tests for the project?

  2. How do I debug these test and the source code for the project?

1 Answer 1

63
  1. Start with a clean directory:
/home/user/Desktop/projects/cpp/ # your project lives here
  1. Add your cmake file(CMakeLists.txt), your source files, and test file. The directory now looks like this:
└─cpp/
    ├─ CMakeLists.txt
    ├─ myfunctions.h
    └─ mytests.cpp
  1. Clone and add googletest to this directory:
└─cpp/
    ├─ googletest/
    ├─ CMakeLists.txt
    ├─ myfunctions.h
    └─ mytests.cpp
  1. Open your CMakeLists.txt and enter the following:
cmake_minimum_required(VERSION 3.12) # version can be different

set(GOOGLETEST_VERSION 1.15.2)

project(my_cpp_project) #name of your project

enable_testing() #to  discover tests in test explorer 

add_subdirectory(googletest) # add googletest subdirectory

include_directories(googletest/include) # this is so we can #include <gtest/gtest.h>

add_executable(mytests mytests.cpp) # add this executable

target_link_libraries(mytests PRIVATE gtest) # link google test to this executable

include(GoogleTest)
gtest_discover_tests(mytests) # discovers tests by asking the compiled test executable to enumerate its tests
  1. Contents of myfunctions.h for the example:
#ifndef _ADD_H
#define _ADD_H

int add(int a, int b)
{
    return a + b;
}

#endif
  1. Contents of mytests.cpp for the example:
#include <gtest/gtest.h>
#include "myfunctions.h"

TEST(myfunctions, add)
{
    GTEST_ASSERT_EQ(add(10, 22), 32);
}

int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

Now you just have to run the tests. There are multiple ways to do that.

In the terminal, create a build/ dir in cpp/:

mkdir build

Your directory should now look like this:

└─cpp/
    ├─ build/
    ├─ googletest/
    ├─ CMakeLists.txt
    ├─ myfunctions.h
    └─ mytests.cpp

Next go into the build directory:

cd build

Then run:

cmake ..
make
./mytests

Alternative way:

  • Install the CMake Tools extension for VS Code
  • In the bottom bar, you can see the current target (in square brackets Build [mytest] and Run [mytest])you want to build / run:
  • Then just click the run button.

enter image description here


Building Google test itself

Using terminal:

  1. Go into the dir /home/user/Desktop/projects/cpp/googletest
  2. Create build/ inside it so that it looks like following:
└─cpp/googletest/
    ├─ build/
    ├─ ...other googletest files
  1. cd build
  2. Run: cmake -Dgtest_build_samples=ON -DCMAKE_BUILD_TYPE=Debug ..
  3. make -j4
  4. ./googletest/sample1_unittest

Using VS-Code

  1. Open the googletest folder into VS Code
  2. CMake extension will prompt for configuration, allow it
  3. You will see a .vscode directory. Inside it is settings.json file, open it, and add the following to it:
    "cmake.configureSettings": { "gtest_build_samples": "ON" }
  1. Build and run from the buttons in the bottom bar
Sign up to request clarification or add additional context in comments.

12 Comments

Thanks for answering but I think you misunderstood me. I dont have any project which I want to test using Google Test. I want to build and debug the Google Test library itself. Is it possible? How can I do it? PS: Please dont delete this answer, its quite good and will help me later when I use Google Test for writing tests for my project.
That should be even more simple, I will put it in the answer.
@Waqar When I try to Build I get fatal error: gtest/gtest.h: No such file or directory I used Using VS-Code steps.
If you want to integrate it into your project, you have to follow the instructions in the first part of the post(before Building Google test itself). The second part is if you want to build googletest and maybe contribute to the project.
@juan it's just convenient to submodule GTest since it's header-only. no problem installing it system-wide for all projects, but sometime different projects need different versions due to other factors.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.