ami*_*421 20 c++ unit-testing cmake ctest catch-unit-test
我正在寻找Catch CatchLib与CMake测试(Ctest)集成的成功示例.据我所知这是另外的cmake脚本,它必须解析应用程序输出?有人写过这个吗?可能分享了这个?
==================================================
更新(已找到解决方案):
我已经向CatchLib 提交了cmake脚本,用于集成Catch与CTest.这是Fraser99的CMake的脚本的简化版本,在这里
Com*_*sMS 38
将Catch与CMake集成非常简单,因为它是一个仅限标头的库.
以下是您需要做的快速简要介绍:
您可以假设Catch源已经安装在构建计算机上,或者使用ExternalProject作为构建过程的一部分来获取它们.
在任何一种情况下,您最终都会在构建计算机上的某个已知目录中使用Catch头文件.我建议创建一个接口目标,以使测试可执行文件知道此信息:
add_library(Catch INTERFACE)
target_include_directories(Catch INTERFACE ${YOUR_CATCH_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)
这样,您可以简单地将Catch指定为依赖项target_link_libraries
:
add_executable(my_test ${MY_TEST_SOURCES})
target_link_libraries(my_test Catch)
Run Code Online (Sandbox Code Playgroud)
和CMake一样,add_test
负责将测试引入CTest:
enable_testing()
add_test(NAME MyAwesomeTest COMMAND my_test)
Run Code Online (Sandbox Code Playgroud)
就是这样.运行make test
在建项目运行测试.
我有一个关于Github的项目,如果你需要看一个完整的工作示例,我会这样做.
使用以下方法安装catch:
$ git clone https://github.com/catchorg/Catch2 <catch_src_dir>
$ mkdir <catch_bin_dir>
$ cd <catch_bin_dir>
$ cmake -DBUILD_TESTING:BOOL=FALSE <catch_src_dir>
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)
然后将以下内容添加到CMakeLists.txt:
find_package(Catch2 REQUIRED)
target_link_libraries(tests Catch2::Catch2)
Run Code Online (Sandbox Code Playgroud)
看这里。
归档时间: |
|
查看次数: |
13007 次 |
最近记录: |