今天研究了一下cmockery,这是一个google开源的c mock测试框架。
最主要的功能就是其mock的功能,就是可以模拟函数的返回结果,还可以模拟参数的输入和输出。


mock的根本思想就是针对测试代码进行单独测试,尽量抛弃对其他模块或者函数的依赖。
用得最多的就是数据库测试,比如一个函数调用数据库,从中取出一些数据,如果没有mock机制,那就必须组织数据库,提供真的环境。这多少有些太麻烦了。
所以只需要模拟返回数据库返回的值就行了。这就是叫mock。


cmockery中文翻译手册


这是一个例子


还有在lua测试框架中,还有一个简单的库,叫lmock,提供简单的lua中的mock的功能。
http://luaforge.net/projects/lmock/



但是我觉得这种mock的方法,实际上是要通过修改链接来完成的,对于代码的组织要求比较高。基本上这些模拟的外接口都要独立在不同的文件中,这样才好mock。