2017-09-24 40 views
0

单元测试我有2个模块为C项目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的源代码?

+0

我看不到您的问题。该函数在B中没有实现。那么为什么不呢? (以及为什么模拟,只需更改'A_func'。) – Olaf

+0

我不想更改A_func,因为它已经是项目的一部分并且已链接进去。我想告诉B_func忽略A_func的原始实现,即在B的单元测试中模拟A_func ... –

回答

1

我结束了使用Mimick。 https://github.com/diacritic/Mimick

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