嵌入式 C++ 系统中的持续集成/单元测试

Posted

技术标签:

【中文标题】嵌入式 C++ 系统中的持续集成/单元测试【英文标题】:Continuous Integration/ Unit testing in embedded C++ systems 【发布时间】:2011-08-19 17:55:16 【问题描述】:

哪些工具通常用于单元测试,尤其是嵌入式系统的持续集成?

我特别认为您通常必须交叉编译和部署,并且您不能轻松地可视化目标平台。此外,运行测试代码和框架可能很困难。

我还能用什么来缓解这些困难?

(我认为应该是某种双重目标,构建服务器在更简单的目标上运行测试)

【问题讨论】:

【参考方案1】:

对于单元测试,请查看 Unity。 http://sourceforge.net/apps/trac/unity/wiki 它是 Ruby 脚本支持的真正轻量级测试工具(2 个 .h 和 1 个 .c 文件)。我们一直在嵌入式 ARM7 目标系统中使用单元测试(通过串行端口重定向测试报告)。 CMock 也支持(惊喜,惊喜)Mocking。尽管不广泛,但它们的优点是它们非常易于使用。 关于 CI,如果您是基于 Linux 的,那么 Hudson 非常好。 还可以查看 CppUTest 并查看 James Grenning 的书籍“嵌入式 C 的 TDD”http://renaissancesoftware.net/

【讨论】:

【参考方案2】:

在工作中我使用 embUnit 框架:

http://embunit.sourceforge.net/embunit/index.html

这个框架的好处是它很精简。它不需要任何外部库(甚至不需要 libc)。您可以轻松地挂接您自己的输出函数,因此如果您在与外部世界的唯一连接是 jtag 或 UART 的系统上工作,那么 embUnit 仍然可以工作。

【讨论】:

【参考方案3】:

我使用RCUNIT 和CANTATA++ 在PC 上对嵌入式代码进行单元测试。任何 Nunit 都应该轻松集成到任何连续测试平台中。我们发现在 PC 上模拟硬件并在最终集成期间仅在目标上进行测试要容易得多。

硬件接口抽象对于在 PC 上对嵌入式代码进行单元测试至关重要。这适用于持续集成,因为它在仅模拟硬件访问的 PC 上运行。稍加努力,我们就可以在 PC 上测试 95% 的代码,以便继续集成。

你也可以看看这些问题:

Unit Testing C Code Testing Frameworks for C Unit Testing Embedded Software

【讨论】:

CANTATA++ 链接已损坏;看起来当前链接是qa-systems.com/cantata.html。【参考方案4】:

我见过在一个系统上使用 C(pp)unit,它可以让你通过 JTAG 启动到目标。

有助于对控制台通讯等进行排序。

但它可以工作。

【讨论】:

【参考方案5】:

为此,我正在开发一个开源的 tool,它可以是最小的测试,也可以在通过调试器运行时提供详细信息。

【讨论】:

以上是关于嵌入式 C++ 系统中的持续集成/单元测试的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 单元测试和持续集成 2011

iOS 应用程序的 Xcode 单元测试中的链接问题与嵌入式 C++ 代码

Jenkins怎么集成c++单元测试?

1月10日在线研讨会 | 符合ISO26262规范要求的单元/集成测试

Jenkins持续集成「编译打包代码检查单元测试环境部署软件测试​」

Gitlab CI 持续集成的完整实践