pkpm桩基础建模(项目推荐-CPP单元测试打桩)

不管你是开发的老码农,还是新入职场菜鸟,只要你是项目里负责写代码的,都得多多少少写点单元测试代码。企业对质量也会有些要求,像单元测试的覆盖率达到100%这种要求。

不管你是开发的老码农,还是新入职场菜鸟,只要你是项目里负责写代码的,都得多多少少写点单元测试代码。企业对质量也会有些要求,像单元测试的覆盖率达到100%这种要求。

其实单元测试达到60%左右可能效率上最高,发挥的作用最大。但硬性指标就是硬性指标,还是得想办法来满足指标要求。

推荐一项开源项目CPP-存根,专门为C单元测试打桩而设计的,使用简单的应用程序接口就能完成函数的替换,让你的覆盖率分分钟达到100%。

项目介绍

支持的操作系统: windows,linux支持的硬件平台: x86、x86-64、arm64、arm32、mips64支持的编译器: msvc,gcc,clang示例了各种获取函数的方法,像构造函数、虚函数、私有函数、模板函数、重载函数、仿函数、静态函数地址等基于gtest、catch2框架模板项目地址:https://github.com/coolxv/cpp-stub

打桩概念:用新实现的函数替换被测代码中的函数,当运行时原先执行函数1,当函数一被函数2替换(即打桩)时,就会运行函数2。

类成员函数例子

#包括牡蛎#使用命名空间标准包含“存根哈类{ int I;public : int foo(int A){ cout ' I是A _ foo ' endl返回0;}};int foo_stub(void* obj,int A){ A * o=(A *)obj;我是foo _ stub 'endl返回0;} int main(){ Stub Stub;stub.set(ADDR(A,foo),foo _ stub);aa。foo(1);返回0;}示例代码调用A:foo,但经过打桩后会变为调用foo_stub。

类的私有成员函数例子

//对于Linux # include I ostream # include ' stub。h ' # include ' addr _ pri。h使用命名空间stdA类{ int A;int foo(int x){ cout ' I是A _ foo ' A endl返回0;}静态int b;静态int bar(int x){ cout ' I是A _ bar ' b endl返回0;}};ACCESS_PRIVATE_FIELD(A,int,A);ACCESS_PRIVATE_FUN(A,int(int),foo);ACCESS_PRIVATE_STATIC_FIELD(A,int,b);ACCESS_PRIVATE_STATIC_FUN(A,int(int),bar);int foo_stub(void* obj,int x){ A * o=(A *)obj;我是foo _ stub 'endl返回0;} int bar _ stub(int x){ cout ' I am bar _ stub ' endl;返回0;} int main(){ A A;auto A _ A=access _ private _ field : aa(A);auto A _ b=access _ private _ static _ field : A : ab();a _ a=1;a _ b=10 call _ private _ fun : afoo(a,1);call _ private _ static _ fun :3360 a : abar(1);auto A _ foo=get _ private _ fun : afoo();auto _ A _ bar=get _ private _ static _ fun : A : abar();存根存根;stub.set(A_foo,foo _ stub);存根集(A_bar,bar _ stub);call _ private _ fun : AFO(a,1);call _ private _ static _ fun :3360 a : abar(1);返回0;}

类的构造函数例子

//对于linux # includeiostream #使用命名空间标准包含" stub.htemplate类Tvoid * get _ ctor _ addr(bool start=true){//start value able必须为没错,否则编译器将优化输出。如果(开始)转到开始;call _ constructor ://不会执行这一行代码。//代码的目的是允许编译器生成调用构造函数的汇编代码t();start ://由程序集char * p=(char*)调用_构造函数获得的代码行t()的地址;//https://gcc。GNU。组织/在线文档/gcc/标签作为值。html int offset=*(int *)(第8页);void * ret=p 12偏移量;返回ret} A类{ public : A(){ cout ' I是A _ constructor ' endl}};B类{ public : B(){ cout ' I是B _ constructor ' endl}};int main(){ 0存根;auto xa=get _ ctor _ addrA();auto XB=get _ ctor _ addrB();stub . set(XB xa);嗜酒者互诫协会级;返回0;}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153302.html

(0)

相关推荐

  • 有时候,我们不像孩子那么透明。

    一花一世界,在孩子的眼中,不用说一朵花,就算是一块石头,都能想象出无限可能。对着石头自言自语,你以为是无聊,其实那是一场盛大的聚会。

    生活 2021年11月25日
  • 百世快递是极兔快递吗,极兔速递上市

    品玩10月29日讯,据澎湃新闻报道,百世集团和J&T极兔速递共同宣布达成战略合作意向,百世集团同意其在国内的快递业务以约68亿元人民币的价格转让给极兔。

    科技 2021年10月29日
  • 孩子扁桃体总发炎要不要切?

    六岁的小迪今年已经第三次患上了扁桃体炎,每次孩子发烧咳嗽,饭也吃不进去。看着孩子难受的样子,小迪妈妈就想让医生把“罪魁祸首”扁桃体切了。但孩子的扁桃体可以随便切掉吗?医生的回答很明确,“能不切就不切,能晚切就晚切,但是如果必须切,则应该尽早切除。”

    生活 2021年9月26日
  • 新生儿出生后身上有红斑是怎么回事,新生儿起红斑怎么回事

    在给家长做入学教育和体检时,我们总是看到鲍晓会有很多红斑,有的家长会问什么是红斑?原因是什么?今天,我们来谈谈红斑。 新生儿红斑又称新生儿中毒性红斑和新生儿荨麻疹,是新生儿常见症状...

    生活 2021年11月14日
  • 华为召开全场景智慧生活发布会,发布智能手表、折叠屏手机等新品

    11月17日晚,华为召开全场景智慧生活发布会,一次性发布了多款新品,其中包括HUAWEI WATCH GT3系列智能手表、HUAWEI WATCH GT Runner智能跑表、二合一笔记本HUAWEI MateBook E、HUAWEI VR Glass 6DoF游戏套装、HUAWEI Mate X2典藏版、HUAWEI FreeBuds Lipstick TWS耳机以及HUAWEI MateStation X一体机皓月银版本。

    科技 2021年11月18日
  • 买了“错货”的商品后,消费者起诉商家和JD.COM,最后被审判。

    在JD.COM平台购买家具。 发现商品不正确,商家虚假宣传。 消费者起诉“一退三赔”。 在“双11”前夕 北京第四中级人民法院 做出最后的判断。 01. 京东平台网购家具货不对板 ...

    科技 2021年10月29日