我正在使用Cmocka进行单元测试,并且不能更改。
我正在测试我的软件的一部分,如果值发生更改,则该软件将调用回调函数,以指示更改的数据项以及新的值。
回调函数具有以下签名:
typedef void (* Value_changed_call_back) (int item_Id, int new_value);
对于单元测试,我想注册一些回调函数,并确保它们实际上已被调用,并且它们接收正确的参数。
我可以expect_int()
在我的模拟中使用,以验证是否已使用正确的参数调用了它们。
但是,我不知道如何使用,will_return()
因为我的回调函数是类型的void
(并且不能更改)。
如何声明模拟回调函数并验证是否使用正确的参数调用了它?请注意,如果未调用该函数,则测试应失败。
我认为最好的方法是为回调创建一个存根并将其注册。然后在回调中,将一些全局变量设置为一个值。然后,您可以断言在存根函数中设置的值。只要断言和回调在同一线程上执行以确保断言不是争用条件,此方法就起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句