使用unity进行单元测试时模拟C函数

使用unity进行单元测试时模拟C函数,c,unit-testing,unity-test-framework,C,Unit Testing,Unity Test Framework,我有一个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的源代码的情况下做到这一点?我最终使用了Mimick。 有点

我有一个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的源代码的情况下做到这一点?

我最终使用了Mimick。


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

我看不到你的问题。该函数没有在B中实现。那么为什么不呢?我不想改变一个函数,因为它已经是项目的一部分,并且已经链接到了。我想告诉B_func忽略A_func的原始实现,即在B的单元测试中模拟A_func。。。