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

标签 c++ unit-testing cmake googletest

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

我的目录如下所示:

- 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)

测试/测试/组件/ColorTests.cpp

#include <gtest/gtest.h>

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

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

测试/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

关于c++ - 如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43379329/

相关文章:

c++ - 编译c++11的chrono time时报错

c++ - 无法从 DLL 打开包含文件

CMake 从 Autoconf 生成 config.h

c++ - cmake 层次结构 zlib、libpng 和我自己的应用程序

c++ - 出于性能原因替代 stdext::hash_map

c++ - 何时在 foo.cpp 中包含 foo.h

ruby-on-rails - 跳过 Ruby on Rails 中的测试单元不起作用

objective-c - 如何在不点击运行按钮的情况下启动 GHUnit 测试?

java - 在 Spring Security 中使用自定义过滤器时,Spring 单元测试 MockMvc 失败

c++ - 为什么cmake会发生这种情况