单位测试时,模拟C函数

时间:2017-09-24 14:09:28

标签: c unit-testing unity-test-framework

我有一个带有2个模块的C项目 - A和B. B有一个从A调用函数的函数。

int B_func() {
  if (1 == A_func()) {return 1;}
  return 2;
 }

我用unity来测试这些模块。

TEST(B, test_b) {
  TEST_ASSERT_EQUAL(1, B_func())
}

当我测试模块B时,我想模拟A_func,因此它将使用我的实现并更改返回值。有没有办法在不更改模块B的源代码的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

我最终使用了Mimick。 https://github.com/diacritic/Mimick

这有点麻烦。我需要将我的项目编译为共享对象并将其链接到我的测试,因此我的函数将在GOT中,因此它不理想,但成功地解决了我的问题。