我是一名 C++ 开发人员,在测试方面,很容易通过注入依赖项、覆盖成员函数等来测试一个类,这样您就可以轻松地测试边缘情况。但是,在 C 中,您不能使用那些美妙的功能。由于编写 C 代码的某些“标准”方式,我发现很难将单元测试添加到代码中。解决以下问题的最佳方法是什么:
传递一个大的“上下文”结构指针:
void some_func( global_context_t *ctx, .... )
{
/* lots of code, depending on the state of context */
}
没有简单的方法来测试依赖函数的失败:
void some_func( .... )
{
if (!get_network_state() && !some_other_func()) {
do_something_func();
....
}
...
}
有很多参数的函数:
void some_func( global_context_t *, int i, int j, other_struct_t *t, out_param_t **out, ...)
{
/* hundreds and hundreds of lines of code */
}
静态或隐藏功能:
static void foo( ... )
{
/* some code */
}
void some_public_func( ... }
{
/* call static functions */
foo( ... );
}