CTest
2021-04-23 17:51
218 查看
一、初识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
1. 在外面的CMakeLists.txt中我们这样写
cmake_minimum_required(VERSION 2.8) project(test) .... add_subdirectory(test) enable_testing() add_test(NAME mytest COMMAND Test)
2. 在test/CMakeLists.txt中写你的测试需要的即可(可以如下面那样写)
三、完整的简单测试工程
include
//sqr.h #ifndef SQR_H_#define SQR_H_ double sqr(double); #endif
View Code
src
//sqr.cpp #include "sqr.h" double sqr(double x) { return x * x; } //main.cppint main() { return 0; }
View Code
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.txtfind_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})
View Code
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)
View Code
相关文章推荐
- 【分布式锁的演化】电商“超卖”场景实战
- 【分布式锁的演化】分布式锁居然还能用MySQL?
- 【分布式锁的演化】手撕redis分布式锁,隔壁张小帅都看懂了!
- 前端入门之JavaScript基本语法
- 承接上一篇,whale系统开篇,聊聊用户认证
- Go之Zap日志库集成Gin
- 高级前端-Babel
- Go之Viper
- 动态内存
- 登录业务
- 【mybatis-plus】CRUD必备良药,mybatis的好搭档
- 【mybatis-plus】主键id生成、字段自动填充
- 最清晰易懂的 Go WaitGroup 源码剖析
- C#并行编程(2):.NET线程池
- 跟你说个笑话,硕士毕业两年,月薪10k,天天面向CV编程
- 这一次,彻底搞懂 Go Cond
- 吉特日化MES&WMS系统--三色灯控制协议转http
- 小程序使用 Promise.all 完成文件异步上传
- L3-013 非常弹的球 (30 分) (math)
- L3-008 喊山 (30 分) (BFS)