【问题标题】:How to add unit tests in Eclipse for a managed ARM C project?如何在 Eclipse 中为托管的 ARM C 项目添加单元测试?
【发布时间】:2017-06-08 01:41:45
【问题描述】:

我有一个托管的 Eclipse 项目,它使用 GNU ARM Embedded Toolchain 为 ST 微控制器进行编译。我现在要做的是,对该项目中的代码进行单元测试。我想用于单元测试的框架是 Google Test。

我尝试为单元测试创​​建第二个 Eclipse 项目,它使用标准 GNU 工具链。像这样:

项目 1 (ARM)
|---src

Project2(桌面)
|---测试

问题是双重的:

  1. 第二个项目无权访问第一个项目的源代码(显然)。因此,我尝试从第一个项目创建一个静态库用于测试目的,这导致了第二个问题。
  2. 从第一个项目创建的库与第二个项目不兼容,因为它使用 GNU ARM 嵌入式工具链而不是标准 GNU 工具链。

为了解决第二个问题,我在第一个项目中添加了构建配置,以尝试使用正确的工具链对其进行编译。但这并没有成功。

我走的另一条路是在与实际代码相同的项目中进行单元测试,并使用构建配置来创建用于单元测试的可执行文件。像这样的:

项目
|---src
|---测试

这也没有奏效,而且似乎与第一种方法存在相同的问题。

问题不在于单元测试本身。我知道如何使用 Google Test 在 Eclipse 中测试常规 C 项目。

在 Eclipse 中,如何对通常使用托管项目进行的嵌入式项目进行单元测试?有可能吗?如果是这样,这是一个好方法还是我应该编写自己的 makefile 来完成这项任务?

【问题讨论】:

    标签: c eclipse unit-testing embedded


    【解决方案1】:

    要使用 eclipse 自动生成的 makefile 来做到这一点,您必须为每个构建创建一个构建配置(一个用于目标,一个用于桌面),相应地:

    • Project1 必须构建为两个平台的静态库。它将以独立于平台的方式包含您的应用程序。
    • Project2 必须仅针对桌面构建,它将包含测试和主要测试,还将链接到 Project1 库。
    • 必须创建一个 Project3(具有主要和平台相关的代码)并构建一个 elf 或 bin,链接到目标平台的 Project1 库。

    如果您决定在目标平台上也运行测试,它可能会变得更加复杂;

    我有两个示例/模板可供您参考,但它们与 eclipse 无关:

    1. 使用带有 msp430 工具链的 Makefile 构建,CppUTest 作为测试框架。 https://github.com/felipe-lavratti/UnitTestingEmbeddedC-Demo1

    2. 使用 Scons 构建,测试在平台、依赖项和 CppUTest 作为单元测试框架中运行。 https://github.com/felipe-lavratti/UnitTestYoutubeVideos

    【讨论】:

      猜你喜欢
      • 2016-05-17
      • 2016-04-28
      • 2011-12-07
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多