首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你是如何将CMock/Unity与Automake集成在一起的?

你是如何将CMock/Unity与Automake集成在一起的?
EN

Stack Overflow用户
提问于 2014-09-26 20:09:52
回答 1查看 1.1K关注 0票数 1

这是我第一次在这里提出问题,请告诉我是否可以改进我的问题。

我正在寻找关于如何干净地构建需要用CMock生成的源文件的模拟版本替换源文件的单元测试的指导。这是必要的,因为CMock要求使用模拟的单元测试代码与模拟源而不是原始源链接。

例如,如果我在测试源文件test.c中调用foo()的函数test_me(),那么要模拟foo(),我必须编译test_test_me: test_me.c, Mockfoo.c, and test.c.

test_me()通常被编译为test_me: test_me.c and foo.c

C是使用CMock使用foo.h提供的Ruby脚本生成的。

如您所见,必须将foo.c替换为Mockfoo.c,以便创建测试程序test_test_me。需要Mockfoo.c,这样test_test_me就可以链接到foo的模拟调用,而不是原始foo调用。当依赖项的数量增加时,替换源变得困难。

例如,如果test_me使用由foo.o、bar.o和baz.o组成的库libfoo.a中的foo、bar和baz,并且只想模拟对foo的调用,那么我需要构建libfoo.a,其中包含编译单元Mockfoo.o、bar.o和baz.o,然后链接到使用模拟foo调用的test.o。如果您有模拟(例如,Mockfoo、Mockbar,但不是baz)和一个具有不同自动规则、标志等的大型源树的排列,这就更加复杂了。

此外,添加模拟必须很简单,因为我们的单元测试经常需要模拟。

一些上下文:

我感兴趣的是在代码被重构或新代码添加到我刚刚加入的大型C项目中时,使用CMock/统一来添加单元测试。

该项目目前使用Automake作为它的构建工具,它将在这里停留。

我对Automake还不熟悉。我熟悉SCons和CMock。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-18 14:14:40

这个问题早在很久以前就提出来了。我将为其他面临类似问题的人张贴我的解决方案。

与CMock/Unity接口的最可靠方法是使用基于Ruby的构建工具rake。可以从您的Makefile.am调用rake。可以创建目标来为每个为构建单元测试而指定的虚假目标调用rake。

在我的特殊情况下,由于构建环境的限制,我无法使用rake。相反,我选择使用克明卡,它具有CMock/Unity提供的功能,并且很容易与自动化集成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26067571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档