单元测试时模拟 C 函数
Mock a C function when unit testing with unity
我有一个包含 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,这样它将使用我的实现并更改 return 值。有没有办法不改变模块B的源代码就可以做到这一点?
我最终使用了 Mimick。
https://github.com/diacritic/Mimick
有点麻烦。我需要将我的项目编译为共享对象,然后 link 将它用于我的测试,这样我的函数就会在 GOT 中,所以它并不理想,但成功地解决了我的问题。
我有一个包含 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,这样它将使用我的实现并更改 return 值。有没有办法不改变模块B的源代码就可以做到这一点?
我最终使用了 Mimick。 https://github.com/diacritic/Mimick
有点麻烦。我需要将我的项目编译为共享对象,然后 link 将它用于我的测试,这样我的函数就会在 GOT 中,所以它并不理想,但成功地解决了我的问题。