随笔分类 - C/C++
摘要:ThreadSanitizer又叫TSan,是一个检查线程Data Race的C/C++工具。它集成在新版的gcc和clang中,通过编译时加-fsanitize=thread,可以在运行时检测出Data Race的问题。
阅读全文
摘要:![](http://images.cnitblog.com/blog/16913/201404/020953210788248.jpg)VS升级到2013后,作为一个Vimer,自然需要更新最新的ViEmu插件,因为现在离了Vim,写代码已经寸步难行了。ViEmu 3.2.1的破解其实和Viemu 3.0.13的破解方法一样。安装前关闭VS,步骤:1. 双击安装 ViEmuVS2013-3.2.1.vsix.2. 在 C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\ 文件夹下,找到 Vie
阅读全文
摘要:CEGUI(Crazy Eddie’s GUI)是一个使用C++实现的基于LGPL协议的的开源GUI库,主要应用于游戏界面。连著名的开源游戏引擎Orge3D也放弃了自己的界面引擎而使用第三方的开源界面引擎CEGUI。对于开源的代码工程,我首先会观察它的代码规范。比如,使用什么命名法,是否使用异常等等,这很有用。看不同的开源工程,可以看到各种不同的代码规范,其中有很多是值得借鉴的。代码规范本身并没有绝对的对错之分,但我们往往为了某一个代码规范争论的面红耳赤。比如,是否使用匈牙利命名法,使用BOOL还是bool等等。这时,就必须综合考虑团队现有的使用习惯和既有代码的风格,制定出一套适合自己的统一的
阅读全文
摘要:今天了解了一下C++与Lua之间的互操作,感觉还算简单,不像之前不了解时那么神秘了。 下面是找到的很好的学习资料,不知道是不是原出处了,反正我找了一下只有cpprog里有。 1.http://www.cppprog.com/2009/0209/62.html - 在C++中使用Lua(一)2.http://www.cppprog.com/2009/0210/63.html - 在C++中使用Lu...
阅读全文
摘要:使用gtest也有很长一段时间了,这期间也积累了一些经验,所以分享一下。GTest为我们提供了便捷的测试框架,让我们只需要关注案例本身。如何在GTest框架下写出优美的测试案例,我觉得必须要做到: 案例的层次结构一定要清晰 案例的检查点一定要明确 案例失败时一定要能精确的定位问题 案例执行结果一定要稳定 案例执行的时间一定不能太长 案例一定不能对测试环境造成破坏 案例一定独立,不能与其他案例有先后...
阅读全文
摘要:在StackOverFlow里找到的,一定要收藏起来。[代码]输出:[代码]
阅读全文
摘要:在之前的代码覆盖率浅谈中其实已经谈到了关于行覆盖的缺陷,但由于行覆盖足够简单,还是被广泛使用着。另我惊讶的是,作为一个商业的C++代码覆盖率工具CoverageMeter,它明确指出,不提供行覆盖数据,因为他们认为行覆盖不准确。
阅读全文
摘要:市面上的C++代码覆盖率工具大都收费,Coverage Validator也不例外。Coverage Validator应该少有人听过,我也是在stackoverflow里听别人介绍的。Coverage Validator,不需要重编被测代码,只需要提供被测二进制程序的pdb文件,就能统计其代码覆盖率。它能同时统计行覆盖,分支覆盖,函数覆盖等……
阅读全文
摘要:上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest
阅读全文
摘要:本文通过分析TEST宏和RUN_ALL_TEST宏,了解到了整个gtest运作过程,可以说整个过程简洁而优美。之前读《代码之美》,感触颇深,现在读过gtest代码,再次让我感触深刻。记得很早前,我对设计的理解是“功能越强大越好,设计越复杂越好,那样才显得牛”,渐渐得,我才发现,简单才是最好。我曾总结过自己写代码的设计原则:功能明确,设计简单。了解了gtest代码后,猛然发现gtest不就是这样吗,同时gtest也给了我很多惊喜,因此,我对gtest的评价是:功能强大,设计简单,使用方便。
阅读全文
摘要:使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。
阅读全文
摘要:“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。
阅读全文
摘要:在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少写代码,多复用代码。Google的程序员也一样,他们考虑到了这个问题,并且提供了一个灵活的参数化测试的方案。
阅读全文
摘要:gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCae级别的,每个TestCase前后。
阅读全文
摘要:这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列
阅读全文
摘要:本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。
阅读全文
摘要:Google Test (gtest)是Google的开源C++测试框架,希望我的总结能给你带来帮助。
阅读全文
摘要:在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。
阅读全文
摘要:BullseyeCoverage Kind of Tool Code Coverage Analyzer for C++/C Organization Bullseye Testing Technology http://www.bullseye.com/ Software Description BullseyeCoverage is a full-featured code covera...
阅读全文
摘要:1、_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 int f(void *p) -->> _f@4(在外部汇编语言里可以用这个名字引用这个函数) 2、C调用约定(即用__cdecl关键字说明)(The C default calli...
阅读全文