如何在 IAR 中执行单元测试和代码覆盖

Posted

技术标签:

【中文标题】如何在 IAR 中执行单元测试和代码覆盖【英文标题】:How to perform Unit testing and Code coverage in IAR 【发布时间】:2019-02-11 12:21:07 【问题描述】:

我正在使用 IAR 嵌入式工作台 8.0。我想使用 C-spy 调试器来执行单元测试和代码覆盖率。有什么方法可以生成 xml 文件并与 jenkins 一起使用来显示覆盖率报告?

谢谢, 阿普尔瓦

【问题讨论】:

欢迎来到 SO。你能更详细地描述你的问题吗?例如。通过添加代码、命令或屏幕截图,您尝试自己解决问题。还请查看帮助中心,尤其是关于asking 和minimal examples。谢谢。 【参考方案1】:

在 Jenkins 中显示 XML 覆盖结果的一个不错的选择是免费的Emma plugin。

插件使用 EMMA-XML 文件。 C-SPY 不能直接生成这种格式,但没有什么能阻止您使用 3rd 方覆盖工具和单元测试。这样您就可以在硬件上运行测试,而不仅仅是模拟它们。

只需要寻找一个覆盖工具,它可以连接到构建步骤并且在其报告选项中具有所需的 EMMA-XML 格式。

请注意,IAR Workbench 附带的编译器有点特殊。至少在 IDE 中使用时,它的命令行语义在某些方面与 gcc 等编译器不同。然而,我的一位同事已经设法使用我们公司的覆盖工具Coco 正确拦截了编译器的调用。请随时向我们的支持团队咨询所需的设置步骤。

【讨论】:

【参考方案2】:

我不认为 IAR Workbench 本身包含任何用于单元测试的 GUI,但是如果您可以使用 3rd-party 工具,您可以使用 Visual Studio 和 VisualGDB 插件来使用 IAR 编译器创建单元测试并运行它们通过 JTAG/SWD。您可以在此处找到有关此主题的详细教程:Creating Unit Tests for IAR-based Projects

代码覆盖比较棘手,因为 IAR 编译器可能无法检测代码以收集必要的信息,但如果您可以使用 gcc 代替,您可以按照here 所示进行设置。

【讨论】:

以上是关于如何在 IAR 中执行单元测试和代码覆盖的主要内容,如果未能解决你的问题,请参考以下文章

单元测试覆盖在 Sonarqube 中不可见

如何在订阅Angular7单元测试用例中对代码进行单元测试

如何在 Unity3D 单元测试中显示代码覆盖率?

编写单元测试用例说明书的依据是啥

CI 中一次单元测试覆盖率问题定位分析

phpunit 单元测试之代码覆盖率