下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考地理一轮复习第二部分人文地理-重在运用第三章农业地域的形成与发展第20讲农业的区位选择课时作业含解析新人教版
- 小学艺术教育发展年度报告
- 吊篮安全管理措施
- 九年级历史上册第七单元工业革命和国际共产主义运动的兴起中考真题演练课件新人教版
- 九年级英语全册Unit5Whataretheshirtsmadeof第4课时习题课件3
- 医学统计学课件-生存分析第十七章资料讲解
- 二零二五年智能制造项目合作合同示范文本下载3篇
- 2024年阳泉固庄煤矿医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 二零二五年钢结构项目居间监理咨询合同3篇
- 2024年江西洪州职业学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 矩形砖砌渠道施工方案
- 大数据与人工智能ppt
- 中医科特色诊疗规范
- 建筑工程一切险条款版
- PEP小学六年级英语上册选词填空专题训练
- 古建筑修缮项目施工规程(试行)
- GA 844-2018防砸透明材料
- 化学元素周期表记忆与读音 元素周期表口诀顺口溜
- 非人力资源经理的人力资源管理培训(新版)课件
- 钼氧化物还原过程中的物相转变规律及其动力学机理研究
- (完整word)2019注册消防工程师继续教育三科试习题及答案
评论
0/150
提交评论