这是我第一次在这里提问,所以如果我可以改进我的问题,请告诉我..
我正在寻找有关如何干净地构建需要用 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
Mockfoo.c 是使用 CMock 使用 foo.h 提供的 Ruby 脚本生成的。
如您所见,foo.c
必须替换Mockfoo.c
为才能创建测试程序,test_test_me
. 需要 Mockfoo.c 以便 test_test_me 可以链接到 foo 的模拟调用,而不是原始的 foo 调用。当依赖项的数量增加时,替换源变得困难。
例如,如果 test_me 使用库 libfoo.a 中的 foo、bar 和 baz,它由 foo.o、bar.o 和 baz.o 组成,并且我只想模拟对 foo 的调用,那么我需要构建libfoo.a 与编译单元 Mockfoo.o、bar.o 和 baz.o 然后链接到test.o
使用模拟 foo 调用的 my。当你有 mock 的排列(例如 Mockfoo、Mockbar,但不是 baz)和具有不同 automake 规则、标志等的大型源树时,这会变得更加复杂。
此外,模拟的添加必须简单,因为我们的单元测试经常需要模拟。
一些上下文:
在重构代码或将新代码添加到我刚刚加入的大型 C 项目的情况下,我有兴趣使用CMock/Unity添加单元测试。
该项目目前使用 Automake 作为其构建工具,并且将继续存在。
我是 Automake 的新手。我熟悉 SCons 和 CMock。