unit-testing - 使用 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
,而是调用 this 的其他函数(您没有提到)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
.
推荐阅读
- java - tomcat 不支持的major.minor 52.0版
- javascript - 仅适用于 Chrome 的脚本(不适用于 FF、Safari)
- javascript - A-Frame 鼠标组件未在移动设备上发布
- elasticsearch - ElasticSearch 将文本转换为小写
- python - 今年最后3个月在python
- excel - 与不同用户共享自定义文件 (exportedUI)
- c# - 反序列化时如何检查JSON字符串中是否存在属性
- python - Pandas 多索引到 csv 文件
- c# - 按钮 onClick 未绑定到 Activity 中的方法
- python - 区分“基本” ctypes 数据类型及其子类?