【发布时间】:2020-12-29 22:46:30
【问题描述】:
在documentation 中,他们只编译了一个文件test.cpp,其中大概包含了所有的测试。我想将我的个人测试与包含#define CATCH_CONFIG_MAIN 的文件分开,例如so。
如果我有一个包含#define CATCH_CONFIG_MAIN 的文件test.cpp 和一个单独的测试文件simple_test.cpp,我已经设法生成了一个包含simple_test.cpp 中的测试的可执行文件:
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 以生成可执行文件:
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 函数是否正确?
【问题讨论】:
标签: c++ unit-testing cmake catch2