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

时间:2017-04-12 20:44:34

标签: c++ unit-testing cmake googletest

我正在使用CLion在我的大学C ++项目上工作,并尝试添加一些示例测试代码。我从GitHub中加入了最新的Google Test框架。我有源和测试的单独目录。问题是编译器没有看到测试。我得到信息“空测试套件。”,虽然正确调用了主要功能。

我的目录如下所示:

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

测试/的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();
}

希望你能帮忙!

1 个答案:

答案 0 :(得分:2)

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