首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Catch2和CMake添加单独的测试文件?

如何使用Catch2和CMake添加单独的测试文件?
EN

Stack Overflow用户
提问于 2020-12-29 22:46:30
回答 1查看 1.2K关注 0票数 3

文档中,它们只编译一个可能包含所有测试的文件test.cpp。我希望将我的单个测试从包含#define CATCH_CONFIG_MAIN的文件中分离出来,比如所以

如果我有一个包含#define CATCH_CONFIG_MAIN的文件#define CATCH_CONFIG_MAIN和一个单独的测试文件simple_test.cpp,我已经设法以这种方式生成了一个包含simple_test.cpp测试的可执行文件:

代码语言:javascript
复制
find_package(Catch2 REQUIRED)

add_executable(tests test.cpp simple_test.cpp)
target_link_libraries(tests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(tests)

但是,这是一种可接受的产生可执行文件的方法吗?从不同的教程中,如果我有更多的测试,我应该能够创建一个测试源库,并将它们链接到test.cpp以生成可执行文件:

代码语言:javascript
复制
find_package(Catch2 REQUIRED)

add_library(test_sources simple_test.cpp another_test.cpp)
target_link_libraries(test_sources Catch2::Catch2)

add_executable(tests test.cpp)
target_link_libraries(tests test_sources)
target_link_libraries(tests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(tests)

但是当我尝试这个时,我得到了一个CMake警告Test executable ... contains no tests!

总之,我应该做一个测试库吗?如果是这样,我如何使它包含我的测试。否则,将我的新test.cpp文件添加到add_executable函数中正确吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 23:14:52

如何使用Catch2和CMake添加单独的测试文件?

使用对象库或使用--Wl,--whole-archive。链接器在链接时从静态库中删除未引用的符号,因此测试不在最终的可执行文件中。

你能举个例子CMakeLists.txt吗?

喜欢

代码语言:javascript
复制
find_package(Catch2 REQUIRED)

add_library(test_sources OBJECT simple_test.cpp another_test.cpp)
target_link_libraries(test_sources Catch2::Catch2)

add_executable(tests test.cpp)
target_link_libraries(tests test_sources)
target_link_libraries(tests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(tests)

代码语言:javascript
复制
find_package(Catch2 REQUIRED)

add_library(test_sources simple_test.cpp another_test.cpp)
target_link_libraries(test_sources Catch2::Catch2)

add_executable(tests test.cpp)
target_link_libraries(tests -Wl,--whole-archive test_sources -Wl,--no-whole-archive)
target_link_libraries(tests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(tests)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65499778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档