对于我的下一个嵌入式系统项目,我想采用单元测试。从技术上讲,它可能不是测试驱动的开发,但我至少想预先进行单元测试并进行全面的单元测试。
我正在使用 IAR EWARM 工具链。我正在考虑使用 cmocka、unity 或 cunit。我正在学习使用 µC/OS-III 作为 RTOS。
问题来了:单元测试如何与图中的 RTOS 一起工作?EG:我应该禁用内核并将代码作为单线程应用程序进行单元测试并存根所有/大多数内核调用,还是有更好的方法?
示例: 在 µC/OS-III 中,入口点仍然是 main。从 main 调用任何初始化代码,然后调用 OSStart() 开始多任务处理。因此,当我运行测试工具时,我无法调用 OSStart()
#ifdef UNIT_TEST
test_runner();
#else
OSStart(&err);
#endif
然后在任务中的所有应用程序代码中,我只需要模拟消息传递和延迟对内核的调用。
这是最好的方法吗?或者我是否更适合启动内核,为我的测试运行程序创建一个任务,并将所有任务作为一个线程运行,或者是否有其他一些好的方法涉及从测试工具中产生其他任务。