嵌入式应用程序中的单元测试应用程序代码是嵌入式开发人员经常忽略的基本需求。乍一看,启动并运行单元测试工具似乎很复杂。但是,开发人员可以相对快速地启动和运行单元测试工具环境。这篇文章将探讨 Cpputest 以及开发人员如何利用现有资源来快速启动和运行环境。
Cpputest简介
Cpputest 是一个基于 C/C++ 的测试框架,用于单元测试和测试驱动代码。通常,Cpputest 用于测试 C 和 C++ 应用程序。该框架为开发人员提供了一个可以执行测试用例的测试工具。Cpputest 还提供了一组可用于测试假设的断言。如果结果不正确,则将测试用例标记为未通过测试。
Cpputest 为嵌入式开发人员提供了一个免费的开源框架来构建单元测试来证明应用程序代码。通过一些额外的工作,如果他们愿意,开发人员甚至可以在目标上运行测试。一般来说,可以使用 Cpputest 来测试存在于硬件抽象层之上的应用程序代码。

安装 Cpputest
可以使用几种不同的安装方法来设置 Cpputest,可以在 Cpputest 网站上找到。首先是安装预打包安装在 Linux 或 MacOS 上。(如果要在 Windows 上安装,则需要使用 Cygwin 或类似工具)。或者,开发人员可以克隆 Cpputest git 存储库。
如果你希望快速入门并进行一些实验,我建议你采用不同的方法。James Grenning 组建了一个 Cpputest 入门项目,其中包含开发人员入门所需的一切。启动项目包括一个可以加载的 docker 文件和一个安装和配置环境的简单命令。如果你想继续,请将 Cpputest 入门项目克隆到你计算机上的合适位置。完成此操作后,你可以按照 James 在 README.md 中的说明进行操作,或者按照本节的其余部分进行操作。
在走得太远之前,确保你在你的机器上安装了 docker 是很重要的。安装过程因 Linux 风格而异,因此你必须搜索一下以找到适合你的方法。
安装并运行 docker 后,嵌入式开发人员可以使用他们的终端应用程序导航到 Cpputest 启动项目目录的根目录,然后运行以下命令:
docker-compose run cpputest make all
第一次运行上述命令时,它需要几分钟才能运行。之后,该命令将下载 docker 镜像,克隆并安装 Cpputest 并构建启动项目。此时,你会在终端中看到类似以下内容:

正如你在上面看到的,在第 23 行的 tests/MyFirstTest.cpp 中存在测试用例失败以及 ERROR: 2 消息。这意味着 Cpputest 和 James 的启动项目已安装并正常工作。
利用 Docker 容器
docker-compose run 命令使 docker 加载 cpputest 容器,然后 make all。一旦命令执行完毕,它将离开 docker 容器。在上图中,这就是我们得到 ERROR: 2. 它返回 docker 容器退出状态的错误代码的原因。
没有必要经常使用“docker-compose run cpputest make all”命令。嵌入式开发人员还可以使用以下命令进入 docker 容器并留在那里:
docker-compose run --rm --entrypoint /bin/bash cpputest
通过这样做,开发人员可以简单地使用命令“make”或“make all”。这样做的好处是它稍微简化了流程,并删除了从原始命令退出 docker 映像时返回的 ERROR 消息。因此,例如,如果我运行 docker 命令并 make,测试工具的输出现在如下所示:

要退出 docker 容器,我需要做的就是输入 exit。
试运行Cpputest
现在我们已经设置了 Cpputest 入门项目,很容易进入并开始使用测试工具。在添加我们自己的任何测试之前,我们应该删除最初的失败测试用例。此测试用例位于 /tests/MyFirstTest.cpp 中。可以使用你喜欢的文本编辑器打开该文件。你会从上图中注意到测试失败发生在第 23 行。该行包含以下内容:
FAIL("Your test is running! Now delete this line and watch your test pass.");
FAIL 是一个内置于 Cpputest 中的断言。所以首先要尝试的是注释掉该行,然后运行“make”或“make all”命令。如果这样做,你将看到测试工具现在成功运行,没有任何失败的测试用例,如下所示:

结论
我们已经简要讨论了如何快速启动和运行 Cpputest。使用 Cpputest 非常简单,而且结果令人信服。开发人员可以利用他们的测试工具和断言来检查代码是否按预期工作。如果出现问题,运行测试工具会将开发人员指向失败的测试用例并提供失败测试的行号。测试工具可以帮助开发人员执行自动化回归测试并快速识别代码中的错误。
开发人员不一定非要使用 Cpputest。有许多可用的单元测试工具。然而,嵌入式开发人员需要使用某种类型的测试工具,而 Cpputest 很容易启动和运行,并且几乎可以集成到任何构建过程中。
发表评论 取消回复