下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CMake运⾏CTest进⾏测试CMake运⾏CTest进⾏测试⽂章⽬录引⾔写代码嘛,总归是要写⼀些测试的,要是把测试代码写在源码⾥⾯,会污染源码,很混乱,所以要单独写测试。类似Java和C#写测试就很⽅便,到了C++这边总有点难处,还好CMake为我们提供了⼀个简单的⼯具可以跑测试,就是CTest,可以很好的和CMake脚本结合使⽤,这⾥把我学习的⼀些东西做个笔记吧。写这个⽂章的时候我处在⽆⽹环境,唯⼀参考的就是cmake--help,奈何本⼈英⽂⽔平不⾼,所以有些理解会有些许偏差。使⽤⽅式根⽬录加enable_testing()在根⽬录的CMakeLists.txt⽂件加上enable_testing(),这个CMake强调了很多次,不然测试运⾏不起来。类似这样option(BUILD_TEST"Whetherornottobuildthetests"ON)if(${BUILD_TEST})message(STATUS"Buildingtests")enable_testing()#Enabletestingonlyworksinrootscopeadd_subdirectory(tests)endif()加上测试add_test然后这个是我的测试那个CMakeLists.txtproject(library_test)add_executable(${PROJECT_NAME}main.cpp)target_link_libraries(${PROJECT_NAME}library)add_test(NAME${PROJECT_NAME}COMMAND${PROJECT_NAME})编译运⾏cmake..cmake--build.ctest#或者maketest看结果add_test命令add_test(NAME<name>COMMAND<command>[<arg>...][CONFIGURATIONS<config>...][WORKING_DIRECTORY<dir>][COMMAND_EXPAND_LISTS])COMMAND测试需要运⾏的命令,如果是add_executable()⽣成的Target,会⾃动定位到⽣成的可执⾏⽂件位置WORKING_DIRECTORY⼯作⽬录,如果没设置且不是add_executable()⽣成的Target,那么⼯作⽬录就默认是${CMAKE_CURRENT_BINARY_DIR}CONFIGURATIONSRestrictexecutionofthetestonlytothenamedconfigurations.COMMAND_EXPAND_LISTSListsinCOMMANDargumentswillbeexpanded,includingthosecreatedwithgeneratorexpressions.这两个还没理解,先把原⽂写在这默认情况下,给定的COMMAND退出代码为0代表测试通过,其他代表测试失败。只能这样的话还叫测试?CMake不可能这么low设置测试属性参考CMake⼿册cmake-properties的PropertiesonTests部分,可以看到测试可以设置很多的属性,我这⾥就挑⼏个常⽤的简单记录⼀下。语法如下:set_tests_properties(test1[test2...]PROPERTIESprop1value1prop2value2)WILL_FAIL这个⼤概意思就是⾮运算,设置这个属性之后,原本测试通过的会测试失败,原本测试失败的会成功通过测试。我就是要反着写,唉,就是玩⼉。TIMEOUT顾名思义,超时,单位秒。⽬前我这个版本看到的默认是10000000,不知道其他版本是不是⼀样的。到了时间程序还没运⾏完成的话会直接杀掉并标记测试超时失败,然后运⾏下⼀个测试。TIMEOUT_AFTER_MATCH也是超时,不过这个是有条件的超时,也就是要当匹配到正则表达式指定的输出后开始计算超时时间,TIMEOUT是⼀启动就开始计算超时时间。注意这个只能使⽤set_property(TEST)来调⽤,因为他要设置两个参数set_tests_properties只⽀持⼀个参数;set_property(TESTmytestPROPERTYTIMEOUT_AFTER_MATCH"${seconds}""${regex}")PASS_REGULAR_EXPRESSION输出⾄少匹配到⼀个正则表达式就认为测试通过;正则表达式可以指定多个,⽤;分隔。set_tests_properties(mytestPROPERTIESPASS_REGULAR_EXPRESSION"[a-Z]Pass;[Oo][Kk];Success")FAIL_REGULAR_EXPRESSION那这个就和上⾯那个是反的,匹配到就认为失败;⼀般情况下,失败⽐成功容易,所以这个优先级⽐上⾯那个⾼,只有这个匹配到,就注定会失败;正则表达式可以指定多个,⽤;分隔。SKIP_REGULAR_EXPRESSION经过上⾯那个,看名字应该也知道⼲啥的了。输出匹配到正则表达式就会标记为跳过,既然能跳过,那我肯定跳,反复横跳那种跳,所以这个优先级⽐上两个⾼;正则表达式可以指定多个,⽤;分隔。SKIP_RETURN_CODECOMMAND的返回值为指定的话就会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲方变更项目负责人商洽函(6篇)范文
- 2026年医学检验技师《基础知识》真题练习卷
- 2026广西防城港市社会保险中心招聘1人考试备考题库及答案详解
- 2026广东省人才市场有限公司招聘所属地市公司负责人招聘3人考试参考题库及答案详解
- 2026财达证券股份有限公司资产管理业务委员会招聘1人考试参考题库及答案详解
- 要求确认员工绩效考核标准回复函(3篇)范文
- 2026年四川省省直机关遴选和选调公务员申论+行政职业能力测验+综合知识复习题及答案
- 2026年广东省揭阳市党校系统人员招聘笔试备考试题及答案详解
- 资金划拨延迟情况说明6篇范文
- 2026福建福州市长乐第一中学高层次教育人才招聘9人(二)笔试备考试题及答案详解
- 2026年中级银行从业《银行业法律法规与综合能力》考试真题(附解析)
- 2026年江苏南通市八年级地理生物会考考试题库(附含答案)
- 2026年石油压裂支撑剂行业分析报告及未来发展趋势报告
- 2026年高考全国II卷生物考试真题及答案
- 2026年磁悬浮轴承行业分析报告及未来发展趋势报告
- 不燃型复合膨胀聚苯乙烯保温板专项施工方案
- 陆上风力发电工程施工质量验收规程
- 职业道德与法治知识点-2025-2026学年中职政治高教版
- 【 历史 】2025-2026学年统编版八年级下册历史期末复习专题归纳课件
- 2026年图书资料员高级技师通关题库及完整答案详解(易错题)
- 小米手环营销策划方案
评论
0/150
提交评论