跳到主要内容

CMake 单元测试

CMake 通过 CTestadd_test() 集成测试:在 CMakeLists.txt 里定义测试用例,构建后用 ctestcmake --build . --target test 运行。

启用测试

在顶层 CMakeLists.txt 中启用测试模块(通常 project() 之后):

enable_testing()

添加测试

add_test() 用于添加一个测试,名称和运行命令由你指定:

add_executable(mytest test_main.cpp)
target_link_libraries(mytest PRIVATE mylib)add_test(NAME MyTest COMMAND mytest)
  • NAME:测试名称,在 ctest 输出和脚本中用于区分。
  • COMMAND:要执行的命令(通常是本工程生成的可执行文件,或脚本)。可指定工作目录、环境、超时等:
add_test(NAME MyTest COMMAND mytest)
set_tests_properties(MyTest PROPERTIES
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT 10
)

运行测试

在构建目录下:

ctest
# 或
cmake --build . --target test

输出详细结果可加 -V--output-on-failure

与 GTest 等框架结合

若使用 Google Test 等框架,可在 add_executable 里链接 gtest,再 add_test(NAME ... COMMAND 该可执行文件)。详见 CMake 配置 GTest 单元测试

小结

  • enable_testing() 启用测试;add_test(NAME 名 COMMAND 命令) 添加测试。
  • 测试命令一般为本工程构建出的可执行文件;用 set_tests_properties 可设置工作目录、超时等。
  • 运行 ctestcmake --build . --target test 执行所有已添加的测试。
阿基米东
📝 作者:阿基米东

GetIoT.tech 创始人,独立开发者,Linux 重度用户,开源软件作者,创业者,INTJ