如何在Eclipse中为托管ARM C项目添加单元测试?

时间:2017-01-23 14:02:41

标签: c eclipse unit-testing embedded

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

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

Project1(ARM)
| --- src

Project2(桌面)
| ---测试

问题是双重的:

  1. 第二个项目无权访问第一个项目的源代码(显然)。因此,我尝试从第一个项目创建一个静态库用于测试目的,这导致了第二个问题。
  2. 从第一个项目创建的库与第二个项目不兼容,因为它使用GNU ARM嵌入式工具链而不是标准GNU工具链。
  3. 为解决第二个问题,我在第一个项目中添加了一个构建配置,尝试使用正确的工具链进行编译。但这没有用。

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

    项目
    | --- SRC
    | ---测试

    这样做也没有用,看起来它和第一种方法的问题似乎都是一样的。

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

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

1 个答案:

答案 0 :(得分:2)

要使用eclipse自动生成的makefile执行此操作,您必须为每个构建创建一个构建配置(一个用于目标,一个用于桌面),相应地:

  • Project1,必须构建为两个平台的静态库。它将以独立于平台的方式包含您的应用程序。
  • Project2必须只为Desktop构建,它将具有测试和测试主,也将链接到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