CTest 简介
CTest 简介
一、初识CTest
CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现测试结果
CTest有两个模式:
-
模式一: 使用CMake configure 和 build工程,在CMakeLists.txt文件中,使用特殊的命令去创建tests。CTest用来执行那些测试
-
模式二: 使用CTest来执行一个script(这个script的语法必须和CMakeLists.txt相同),去控制整个程序的输出结果
二、使用方法
目前我们在工程中这样构建单元测试
project |--------include | |--------src | |-----------test | |---CMakeLists.txt | |--------CMakeLists.txt
- 在外面的CMakeLists.txt中我们这样写
cmake_minimum_required(VERSION 2.8) project(test) .... add_subdirectory(test) enable_testing() add_test(NAME mytest COMMAND Test)
- 在test/CMakeLists.txt中写你的测试需要的即可(可以如下面那样写)
三、完整的简单测试工程
include
src
//sqr.cpp #include "sqr.h" double sqr(double x) { return x * x; } //main.cpp int main() { return 0; }
test
//test.cpp #include "sqr.h" #define BOOST_TEST_MODULE SqrTests #include BOOST_AUTO_TEST_CASE(FailTest) { BOOST_CHECK_EQUAL(5, sqr(2)); } BOOST_AUTO_TEST_CASE(PassTest) { BOOST_CHECK_EQUAL(4, sqr(2)); } //CMakeLists.txt find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED) include_directories(include ${Boost_INCLUDE_DIRS}/boost) add_definitions(-DBOOST_TEST_DYN_LINK -g) add_executable(Test test.cpp) target_link_libraries(Test sqr ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) message(WARNING ${Boost_FILESYSTEM_LIBRARY}) message(WARNING ${Boost_SYSTEM_LIBRARY}) message(WARNING ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(test) include_directories(include) add_library(sqr STATIC src/sqr.cpp) add_executable(demo src/main.cpp) target_link_libraries(demo sqr) add_subdirectory(test) enable_testing() add_test(NAME mytest COMMAND Test)
参考文档:
https://gitlab.kitware.com/cmake/community/-/wikis/doc/ctest/Testing-With-CTest
https://cmake.org/cmake/help/latest/manual/ctest.1.html
https://cmake.org/cmake/help/v2.8.12/ctest.html
https://linux.die.net/man/1/ctest
https://github.com/Azure/ctest
https://github.com/bvdberg/ctest
https://github.com/bvdberg/ctest
https://docs.nersc.gov/services/cdash/with_cmake/
标签:
CMakelists
, CTest
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库