测试内核模块
Testing a kernel module
我对模拟函数和全局变量感兴趣,以便对内核模块进行单元测试。
最初尝试 https://github.com/ThrowTheSwitch/CMock 但 运行 遇到问题。任何有关如何执行此操作的文章链接也很棒。 (对于内核模块)。在这里提供更多细节:作为内核模块编译会出错,因为 stdio 不可用,为用户 space 编译会出错,因为它找不到像 printk.
这样的东西
理想情况下,我会有一个用户级可执行文件或一个内核模块,可以 运行 对我的函数进行单元测试。我遇到问题的部分是模拟全局依赖项,例如函数为了编写像样的测试所依赖的结构。
我已经经历了几次 questions and articles about 但没有找到答案,也没有找到为什么这不可能的明确原因。
我会按如下方式进行:
- 实现你的内核模块
- 定义一个 API 让用户级程序测试您的模块,它可以基于:
/dev/
中的字符设备(您可以在其中定义适当的 ioctl);
/proc/
中的一个文件(气馁);
- 特定系统调用(不鼓励);
/sys/
中的条目
- 在用户级实施一个程序(以防万一,使用像 CUnit or googletest 这样的适当框架),它与内核模块交互以测试各种功能
我对模拟函数和全局变量感兴趣,以便对内核模块进行单元测试。
最初尝试 https://github.com/ThrowTheSwitch/CMock 但 运行 遇到问题。任何有关如何执行此操作的文章链接也很棒。 (对于内核模块)。在这里提供更多细节:作为内核模块编译会出错,因为 stdio 不可用,为用户 space 编译会出错,因为它找不到像 printk.
这样的东西理想情况下,我会有一个用户级可执行文件或一个内核模块,可以 运行 对我的函数进行单元测试。我遇到问题的部分是模拟全局依赖项,例如函数为了编写像样的测试所依赖的结构。
我已经经历了几次 questions and articles about
我会按如下方式进行:
- 实现你的内核模块
- 定义一个 API 让用户级程序测试您的模块,它可以基于:
/dev/
中的字符设备(您可以在其中定义适当的 ioctl);/proc/
中的一个文件(气馁);- 特定系统调用(不鼓励);
/sys/
中的条目
- 在用户级实施一个程序(以防万一,使用像 CUnit or googletest 这样的适当框架),它与内核模块交互以测试各种功能