我有一个托管 Eclipse 项目,它使用 GNU ARM 嵌入式工具链为 ST 微控制器进行编译。我现在想做的是,对该项目中的代码进行单元测试。我想用于单元测试的框架是Google Test。
我尝试为单元测试创建第二个 Eclipse 项目,它使用标准 GNU 工具链。像这样:
项目1(ARM)
|---源代码
项目2(桌面)
|---测试
这样做的问题是双重的:
- 第二个项目无法访问第一个项目的源代码(显然)。因此,我尝试从第一个项目创建静态库以进行测试,这导致了第二个问题。
- 从第一个项目创建的库与第二个项目不兼容,因为它使用 GNU ARM 嵌入式工具链而不是标准 GNU 工具链。
为了解决第二个问题,我向第一个项目添加了构建配置,以尝试使用正确的工具链对其进行编译。但这并没有成功。
我采取的另一条途径是在与实际代码相同的项目中进行单元测试,并使用构建配置来创建用于单元测试的可执行文件。像这样的东西:
Project
|---src
|---测试
但这并没有解决问题,而且无论如何,这似乎与第一种方法有同样的问题。
问题不在于单元测试本身。我知道如何使用 Google Test 在 Eclipse 中测试常规 C 项目。
通常如何使用 Eclipse 中的托管项目对嵌入式项目进行单元测试?有可能吗?如果是这样,这是一个好方法吗?还是我应该编写自己的 makefile 来完成此任务?
要使用 eclipse 自动生成的 makefile 来做到这一点,您必须为每个构建创建一个构建配置(一个用于目标,一个用于桌面),相应地:
- Project1 必须构建为两个平台的静态库。它将以独立于平台的方式包含您的应用程序。
- Project2 必须仅针对桌面构建,它将有测试和主要测试,还将链接到 Project1 库。
- 必须创建一个 Project3(具有主要和平台相关代码)并构建一个 elf 或 bin,链接到目标平台的 Project1 库。
如果您决定也在目标平台上运行测试,事情可能会变得更加复杂;
我有两个示例/模板可供您参考,但它们与 eclipse 无关:
使用 msp430 工具链、CppUTest 作为测试框架使用 Makefile 进行构建。https://github.com/felipe-lavratti/UnitTestingEmbeddedC-Demo1 https://github.com/felipe-lavratti/UnitTestingEmbeddedC-Demo1
使用 Scons 构建,测试在两个平台、依赖项和作为单元测试框架的 CppUTest 中运行。https://github.com/felipe-lavratti/UnitTestYoutubeVideos https://github.com/felipe-lavratti/UnitTestYoutubeVideos
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)