0

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

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

我使用统一来测试这些模块。

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

当我测试模块 B 时,我想模拟 A_func 以便它使用我的实现并更改返回值。有没有办法在不改变模块 B 的源代码的情况下做到这一点?

4

1 回答 1

1

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

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

于 2017-09-26T13:35:11.273 回答