我已经用STM32核心板.I做了一个嵌入式功能的程序。目前,我想做一些功能的单元测试,包括模数转换器、串行接口、UART..Can等外围设备。任何人建议使用单元测试框架来测试这些功能。
发布于 2020-04-15 20:33:08
我知道有两种常见的策略:
- to avoid any processing logic in HAL/driver components as far as possible.
- to avoid any HW dependencies and any non-portable code in the remaining parts of your SW.
现在,您可以将代码的无硬件部分转移到一些PC架构(x86或其他任何架构),并使用传统的UT工具进行所有的单元测试。当然,您的UT会忽略与STM32和您的PC之间的差异有关的任何错误。请注意,这通常不是一个太大的问题,因为特定于硬件的功能已经被“推入”到HAL中,而在代码的其他部分中,您只寻找与硬件/体系结构无关的逻辑错误。
我知道答案的这一部分是围绕你的主题进行讨论的,而不是提供你所要求的解决方案。尽管如此,许多项目都是这样做的。
为了在这两种策略之间做出决定,您应该考虑执行单元测试的目的是什么这个问题:
通常,某种类型/级别的关键程度对应于一定的工作量,以便将软件/系统中残留错误的概率降低到合理可行的最低水平()。您应该确保以平衡的方式“花费”这些努力,以便您在每次添加验证时都能找到尽可能多的错误。低级代码的单元测试更加单调乏味,并且通常比其他类型的测试发现更少的错误(每个测试用例或每个工作小时)。
如果这些要求适用于您的情况,您将必须说服评估员,所应用的验证措施是足够的。为了提高专业效率,在项目开始时决定(并开始讨论)遵循哪种策略是至关重要的。
编辑:我刚刚遇到了a good discussion of this topic at SoftwareEngineeringStackExchange。看一下那里。
发布于 2020-10-27 03:23:32
我建议Unity测试框架只是添加到项目中的几个头文件。您可以使用Cmock和Ceedling来增强此功能,以便在主机上构建您的单元测试。您还可以使用platformio来收集集成测试结果,如here所示。我还没有弄清楚Cmock是否可以在stm32板上工作,但我可能会在不久的将来尝试。
我已经使用cmock和ceedling (在Linux上)对STM32代码进行了单元测试,然后在target上进行了一些集成测试。
https://stackoverflow.com/questions/61136966
复制相似问题