下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职服装款式设计(设计灵感开发)试题及答案
- 2025年大学大一(思想政治教育)教育学原理阶段测试试题及答案
- 2025-2026年小学三年级语文(篇章理解)上学期期中测试卷
- 2025年大学养老服务管理(管理研究实务)试题及答案
- 中职第二学年(物流服务与管理)货运代理实务2026年综合测试题及答案
- 2025年大学视觉传达设计(平面设计)试题及答案
- 2025门诊个人年终总结报告
- 深度解析(2026)《GBT 17980.85-2004农药 田间药效试验准则(二) 第85部分杀菌剂防治花生叶斑病》
- 深度解析(2026)《GBT 17503-2009海上平台场址工程地质勘察规范》(2026年)深度解析
- 福建农业职业技术学院《临床免疫学及检验》2025-2026学年第一学期期末试卷
- 2026中国人民银行直属事业单位招聘60人备考题库及答案详解(历年真题)
- (新教材)2025年人教版七年级上册历史期末复习常考知识点梳理复习提纲(教师版)
- 2025年《刑事诉讼法》重点程序及修正案解析知识考试题库及答案解析
- 具身智能+建筑维修智能检测系统方案可行性报告
- 小学五年级上册语文期中期末必背1-8单元高频考点复习
- 金太阳山西省三晋联盟山西名校2025-2026学年高一上学期11月期中联合考试语文(26-126A)(含答案)
- (光大联考)广东省2026届高三普通高中毕业班第二次调研英语试题(含答案解析)
- 注意缺陷多动障碍(ADHD)基层医疗机构规范化诊疗方案
- GB/T 46571-2025日期和时间词汇
- 2025中国长寿医学与抗衰展望
- 羊水穿刺医学科普
评论
0/150
提交评论