【问题标题】:No tests found when using gtest with cmake/ctest将 gtest 与 cmake/ctest 一起使用时未找到测试
【发布时间】:2012-11-13 01:29:48
【问题描述】:

我有一个具有以下结构的项目:

linalg
├── build
├── CMakeLists.txt
├── docs
│   └── Doxyfile
├── include
│   └── linalg
│       └── vector3.hpp
├── src
│   ├── CMakeLists.txt
│   └── linalg
│       └── vector3.cpp
└── test
    ├── CMakeLists.txt
    └── linalg
        └── test_vector3.cpp

文件 test_vector3.cpp 是一个 gtest 单元测试文件,它提供了两个简单的测试。顶层 CMakeLists.txt 只是设置包含并添加 src 和 test 子目录:

cmake_minimum_required(VERSION 2.8)

project(linalg)

include_directories(include)
add_subdirectory(src)
add_subdirectory(test)

src/CMakeLists.txt文件将vector3.cpp编译成静态库:

cmake_minimum_required(VERSION 2.8)

add_library(linalg linalg/vector3.cpp)

test/CMakeLists.txt 文件基于 /usr/share/cmake-2.8/Modules/FindGTest.cmake 中提供的示例:

cmake_minimum_required(VERSION 2.8)

enable_testing()
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

add_executable(test_vector3 linalg/test_vector3.cpp)
target_link_libraries(test_vector3 linalg ${GTEST_BOTH_LIBRARIES} pthread)

add_test(test_vector3 test_vector3)

然后我运行以下命令:

cd build
cmake ..
make

我将 liblinalg.a 库正确编译到 build/src 中,并将 test_vector3 可执行文件正确编译到 build/test 中。我可以运行 test_vector3 可执行文件,我从 googletest 得到输出,说所有测试都已通过,但是如果我运行 make test 我没有任何输出,如果我运行 ctest .. 我收到一条消息:

Test project /home/ryan/GitHub/linalg/build
No tests were found!!!

我有什么遗漏吗?还是我只是误解了 ctest 如何与 gtest 一起工作?

【问题讨论】:

    标签: cmake googletest ctest


    【解决方案1】:

    问题的症结在于,在这种情况下,应该从您的顶级 CMakeLists.txt 调用 enable_testing。将include(CTest) 添加到您的顶级 CMakeLists.txt 应该会为您解决此问题。

    这将允许您删除 test/CMakeLists.txt 中的 enable_testing 调用,因为 CTest 子模块在内部调用 enable_testing

    【讨论】:

      【解决方案2】:

      只是为了更新这个。

      3.9 版中的 cmake 添加了对 GoogleTest 与 CTest 集成的支持。

      因此,您现在可以让 CTest 抓取您的测试可执行文件中的所有测试宏,而不仅仅是整个可执行文件。

      这里的例子: https://gist.github.com/johnb003/65982fdc7a1274fdb023b0c68664ebe4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-04
        • 2023-03-20
        • 1970-01-01
        • 2015-03-15
        • 1970-01-01
        • 2021-09-25
        • 2020-01-27
        相关资源
        最近更新 更多