如何使用 CMake 在 C++ 代码中 运行 gtest? (未见测试)

How can I run gtest in C++ code using CMake? (tests not seen)

我正在 Windows 在我的大学 C++ 项目中使用 CLion,并尝试添加一些示例测试代码。我包含了来自 GitHub 的最新 Google 测试框架。我有单独的源目录和测试目录。问题是编译器看不到测试。我得到信息 "Empty test suite.",虽然主要功能被正确调用。

我的目录如下所示:

- root
- src
- tests
    * tests/components/ColorTest.cpp
    * gtest.cpp
    * CMakeLists.txt
- CMakeLists.txt

代码如下:

CMakeLists.txt

cmake_minimum_required(VERSION 3.7)
project(SI_lab_2)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")

include_directories(src)
include_directories(tests)

add_subdirectory(src)
add_subdirectory(tests)

tests/CMakeLists.txt

cmake_minimum_required(VERSION 3.7)
project(tests)

add_subdirectory(lib/googletest)

enable_testing()

include_directories(${gtest_SOURCE_DIR_}/include ${gtest_SOURCE_DIR_})

set(SOURCE_FILES
        gtest.cpp
        tests/components/ColorTests.cpp)

add_executable(tests_run gtest.cpp)

target_link_libraries(tests_run gtest gtest_main)

add_test(eq tests_run)

tests/tests/components/ColorTests.cpp

#include <gtest/gtest.h>

TEST(ColorTests, eq)
{
    EXPECT_EQ(1, 0);
}

TEST(ColorTests, noteq)
{
    EXPECT_NE(1, 0);
}

tests/gtest.cpp

#include <gtest/gtest.h>

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

希望能帮到你!

在你的 tests/CMakeLists.txt 中你应该替换 add_executable(tests_run gtest.cpp) 来自 add_executable(tests_run ${SOURCE_FILES})。您编写的测试未被编译,因为您忘记将其添加到 add_executable