gpt4 book ai didi

c++ - 使用 Google Test 和 CMake 在子文件夹中配置测试

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:46 24 4
gpt4 key购买 nike

这应该是一个相当简单的问题,但考虑到使用 cmake 构建项目的黑魔法,它将帮助很多为此苦苦挣扎的人。

我正在尝试让我的代码库更有条理一些。为此,我正在根据域创建包含测试套件的子文件夹。

Google 测试本身已经在编译和运行,唯一的问题是通过这次重组,Google 测试无法找到我拥有的任何测试用例。

这是我的结构:

tests\     |     \domain1\             |CMakeLists.txt             |domain1_test.cpp             |domain1_test.hpp             |[.. more tests ...]     \domain2\             |CMakeLists.txt             |domain2_test.cpp             |domain2_test.hpp             |[.. more tests ...]     |main.cpp     |CMakeLists.txt

As you can see, I have two folders where tests live.

The CMakeLists.txt files in those are as follows:

SET(DOMAIN1_TEST_SRC        domain1_test.cpp        domain1_test.hpp)ADD_LIBRARY(domain1testlib STATIC ${DOMAIN1_TEST_SRC})TARGET_LINK_LIBRARIES(domain1testlib        ${Boost_LIBRARIES}        domain_lib        gtest        )TARGET_INCLUDE_DIRECTORIES(domain1testlib        INTERFACE        ${CMAKE_CURRENT_SOURCE_DIR})

The CMakeLists.txt in the main tests directory is:

add_subdirectory(domain1)add_subdirectory(domain2)ADD_EXECUTABLE(my_domain_tests main.cpp)TARGET_LINK_LIBRARIES(my_domain_tests        ${Boost_LIBRARIES}        domain1testlib        domain2testlib        comptestlib        gtest        )add_test(MyTestSuite my_domain_tests)

What am I doing wrong?

Running tests just says that No tests were found.

Thanks!

UPDATEAdding my main.cpp

It's really nothing special, just the boilerplate main.cpp file.

#include "gtest/gtest.h"

int main(int argc, char ** argv) {

::testing::InitGoogleTest(&argc, argv);

return RUN_ALL_TESTS();
}

最佳答案

问题是您的可执行源(即 main.cpp)没有引用您的 domain*teSTLib 中的任何符号。

Google Test 中的 TESTTEST_F 宏会自动向测试运行程序注册测试用例。因此,您的测试源文件实际上包含对 gtest 库中符号的引用,而不是相反。因此,链接器将不会包含您的任何实际测试用例。

您应该将 domain*_test.cppdomain*_test.hpp 文件作为可执行源的一部分,而不是用它们创建库。您可以直接引用文件或使用每个 CMakeLists.txt 中定义的变量和源列表。

关于c++ - 使用 Google Test 和 CMake 在子文件夹中配置测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com