如何在 VS Code 中运行测试和调试 Google Test 项目?

Stu*_*Man 9 c++ cmake googletest visual-studio-code

我想运行示例测试并调试Google 测试项目。我在 Ubuntu 16.04 LTS 上使用 VS Code。

  • 我在本地克隆了该项目/home/user/Desktop/projects/cpp/googletest
  • 创建了一个名为mybuildat的新目录/home/user/Desktop/projects/cpp/mybuild
  • 根据这里的 README 说明:https : //github.com/google/googletest/tree/master/googletest我使用命令cmake -Dgtest_build_samples=ON /home/user/Desktop/projects/cpp/googletest来构建项目,这生成了一堆文件,显然构建成功。

现在,我有两个问题:

  1. 如何为项目运行示例测试?

  2. 我如何调试这些测试和项目的源代码?

Waq*_*med 25

  1. 从一个干净的目录开始:
/home/user/Desktop/projects/cpp/ # your project lives here
Run Code Online (Sandbox Code Playgroud)
  1. 添加您的 cmake 文件 (CMakeLists.txt)、您的源文件和测试文件。该目录现在看起来像这样:
??cpp/
    ?? CMakeLists.txt
    ?? myfunctions.h
    ?? mytests.cpp
Run Code Online (Sandbox Code Playgroud)
  1. 克隆并添加googletest到此目录:
??cpp/
    ?? googletest/
    ?? CMakeLists.txt
    ?? myfunctions.h
    ?? mytests.cpp
Run Code Online (Sandbox Code Playgroud)
  1. 打开您的CMakeLists.txt并输入以下内容:
cmake_minimum_required(VERSION 3.12) # version can be different

project(my_cpp_project) #name of your project

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
Run Code Online (Sandbox Code Playgroud)
  1. 内容myfunctions.h的例子:
#ifndef _ADD_H
#define _ADD_H

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

#endif
Run Code Online (Sandbox Code Playgroud)
  1. 内容mytests.cpp的例子:
#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();
}
Run Code Online (Sandbox Code Playgroud)

现在你只需要运行测试。有多种方法可以做到这一点。

在终端中,在以下位置创建一个build/目录cpp/

mkdir build
Run Code Online (Sandbox Code Playgroud)

您的目录现在应如下所示:

??cpp/
    ?? build/
    ?? googletest/
    ?? CMakeLists.txt
    ?? myfunctions.h
    ?? mytests.cpp
Run Code Online (Sandbox Code Playgroud)

接下来进入build目录:

cd build
Run Code Online (Sandbox Code Playgroud)

然后运行:

cmake ..
make
./mytests
Run Code Online (Sandbox Code Playgroud)

替代方式:

  • 安装CMake ToolsVS Code的扩展
  • 在底部栏中,您可以看到要构建/运行的当前目标(在方括号Build [mytest]Run [mytest] 中):
  • 然后只需单击运行按钮。

在此处输入图片说明


自行构建 Google 测试

使用终端:

  1. 进入目录 /home/user/Desktop/projects/cpp/googletest
  2. build/在其中创建,使其看起来如下所示:
??cpp/googletest/
    ?? build/
    ?? ...other googletest files
Run Code Online (Sandbox Code Playgroud)
  1. cd build
  2. 跑: cmake -Dgtest_build_samples=ON -DCMAKE_BUILD_TYPE=Debug ..
  3. make -j4
  4. ./googletest/sample1_unittest

使用 VS 代码

  1. googletestVS Code 中打开文件夹
  2. CMake 扩展将提示进行配置,允许它
  3. 你会看到一个.vscode目录。里面是settings.json文件,打开它,然后添加以下内容:
    "cmake.configureSettings": { "gtest_build_samples": "ON" }
Run Code Online (Sandbox Code Playgroud)
  1. 从底部栏中的按钮构建和运行

  • 感谢您的回答,但我认为您误解了我的意思。我没有任何想要使用 Google Test 进行测试的项目。我想构建和调试 Google 测试库本身。是否可以?我该怎么做?PS:请不要删除这个答案,它非常好,以后当我使用 Google Test 为我的项目编写测试时会对我有所帮助。 (2认同)
  • 那应该更简单了,我会把它放在答案中。 (2认同)
  • 如果您想将其集成到您的项目中,您必须按照帖子第一部分中的说明进行操作(在**构建 Google 测试本身**之前)。第二部分是如果您想构建 googletest 并可能为该项目做出贡献。 (2认同)