C++ 测试支持与 配置缓存 不兼容。 |
原生生态系统中的测试形式多种多样。
存在不同的测试库和框架,以及许多不同类型的测试。无论它们是频繁执行还是不频繁执行,都需要成为构建的一部分。本章专门介绍 Gradle 如何处理构建之间和构建内部的不同需求,重点介绍它如何与基于可执行文件的测试框架集成,例如 Google Test。
与 Java & JVM 项目中的测试 相比,在 Gradle 中测试 C++ 项目相当有限。在本章中,我们将解释控制测试运行方式的方法 (测试执行)。
但首先,我们来看看 Gradle 中原生测试的基础知识。
基础知识
所有 C++ 测试都围绕一个单一的任务类型:RunTestExecutable。这将运行使用任何测试框架构建的单个测试可执行文件,并使用可执行文件的退出代码断言执行成功。不会收集测试用例结果,也不会生成报告。
为了运行,RunTestExecutable 任务类型只需要一个信息
-
在哪里找到构建的测试可执行文件(属性:RunTestExecutable.getExecutable())
当您使用 C++ 单元测试插件 时,您将自动获得以下内容
-
一个专用的 unitTest 扩展,用于配置测试组件及其变体
-
一个类型为 RunTestExecutable 的
run
任务,用于运行测试可执行文件
测试插件会适当地配置所需的信息。此外,它们将 run
任务附加到 check
生命周期任务。它还会创建 testImplementation
依赖配置。仅在测试编译、链接和运行时需要的依赖项可以添加到此配置中。unitTest
脚本块的行为类似于 application
或 library
脚本块。
RunTestExecutable 任务具有许多配置选项。我们在本章的其余部分介绍了其中一些选项。
测试执行
Gradle 在一个单独的(“分叉”)进程中执行测试。
您可以通过 RunTestExecutable 任务上的几个属性来控制测试进程的启动方式,包括以下内容
ignoreFailures
- 默认值:false-
如果此属性为
true
,Gradle 将在测试完成后继续执行项目的构建,即使其中一些测试失败。请注意,默认情况下,RunTestExecutable 任务类型始终执行它检测到的所有测试,无论此设置如何。
有关所有可用配置选项的详细信息,请参阅 RunTestExecutable。