我对模拟函数和全局变量感兴趣,以便对内核模块进行单元测试.
最初尝试使用https://github.com/ThrowTheSwitch/CMock但遇到了问题.关于如何做到这一点的任何文章链接也会很棒.(对于内核模块).在这里提供更多细节:编译作为内核模块会出错,因为stdio不可用,编译用户空间会出错,因为它找不到像printk这样的东西.
理想情况下,我会有一个用户级可执行文件或一个内核模块,可以在我的函数上运行单元测试.我遇到麻烦的部分是模拟全局依赖,比如函数所依赖的结构,以便编写一个体面的测试.
我已经阅读了一些关于此的问题和文章 , 但没有找到答案,或者为什么这是不可能的明确理由.
我会按如下方式进行:
实现您的内核模块
定义一个API,让用户级程序测试您的模块,该模块可以基于:
一个字符设备/dev/
(你可以定义适当的ioctls);
/proc/
(劝阻)文件;
特定系统调用(不鼓励);
一个条目 /sys/
在用户级实现一个程序(如果使用适当的框架,如CUnit或googletest),它与内核模块交互,测试各种功能