我有一个带有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的源代码的情况下执行此操作?
答案 0 :(得分:1)
我最终使用了Mimick。 https://github.com/diacritic/Mimick
这有点麻烦。我需要将我的项目编译为共享对象并将其链接到我的测试,因此我的函数将在GOT中,因此它不理想,但成功地解决了我的问题。