用cmocka模拟函数



我正在尝试使用cmocka:模拟一些函数

void test_led_driver_NeedToImplement(void **state)
{

state_t current = CLEAR;
will_return(led_status_toggel,SET);

TEST_ASSERT_EQUAL(SET, led_status_toggel(current));
}

但是,我得到了一个错误:led_status_toggel((有剩余的未返回值。我必须为我的函数创建一个模拟文件吗?或者这个错误的来源是什么?Ps:我使用unity.h作为断言库。

根据您的测试,您正在测试的函数是led_status_toggel。如果是这样的话,你不应该嘲笑它。你应该删除will_return(led_status_toggel,SET);,因为你的led_status_toggel可能是这样的(你不分享,所以我不知道确切的(:

state_t led_status_toggel(state_t state)
{
if (state == CLEAR)
{
return SET;
}       
return CLEAR;
}

如果测试中的函数不是led_status_toggel,而是调用该led_status_toggel的其他函数(您没有提到(,那么您可以像一样模拟该函数

state_t __wrap_led_status_toggel(state_t state)
{
return (state_t)mock();
}

并在构建命令中使用-Wl,--wrap=led_status_toggel。使用--wrap链接器标志,当您执行测试时,将调用模拟函数__wrap_led_status_toggel,而不是原始的led_status_toggel

相关内容

  • 没有找到相关文章

最新更新