Continuous Integration/ Unit testing in embedded C++ systems
什么工具通常用于单元测试,特别是嵌入式系统的持续集成?
我特别认为您通常需要交叉编译和部署,并且您无法轻松地可视化目标平台。 此外,运行测试代码和框架也很困难。
我可以用什么来缓解这些困难?
(我认为它应该是某种双重目标,其中构建服务器在更容易的目标上运行其测试)
对于单元测试,请查看Unity。
http://sourceforge.net/apps/trac/unity/wiki
它是Ruby脚本支持的非常轻量级的测试工具(2 x .h和1 x .c文件)。我们一直在嵌入式ARM7目标系统中进行单元测试(通过串口重定向测试报告)。
它也得到CMock的支持(惊喜,惊喜)Mocking。即使不是很广泛,关于这些的好处是它们易于使用。
关于CI,如果你是基于Linux的话,Hudson非常好。
另请参阅CppUTest并查看James Grenning的书籍"TDD for Embedded C",网址为:http://renaissancesoftware.net/
在工作中我使用embUnit框架:
http://embunit.sourceforge.net/embunit/index.html
关于这个框架的好处是,它是精益的。它不需要任何外部库(甚至不是libc)。您可以轻松地挂接自己的输出功能,因此如果您在与外部世界的唯一连接是jtag或UART的系统上工作,那么embUnit仍然可以工作。
我使用RCUNIT和CANTATA ++对PC上的嵌入式代码进行单元测试。任何Nunit都应该轻松集成到任何连续的测试平台中。我们发现在PC上模拟硬件并在最终集成期间仅在目标上进行测试要容易得多。
硬件接口抽象对于在PC上对嵌入式代码进行单元测试至关重要。这适用于持续集成,因为它只在模拟硬件访问的PC上运行。通过一点努力,我们可以在PC上测试95%的代码,以便继续集成。
您还可以查看以下问题:
- 单元测试C代码
- 测试C的框架
- 单元测试嵌入式软件
我正在开发一个开源工具,这可以是最小的测试,也可以在调试器运行时提供详细信息。
我已经看到在系统上使用的C(pp)单元,可以通过JTAG启动到目标。
帮助控制台通信等排序。
但它可以工作。