XCTest 插件提供了 tasks、配置和约定,用于集成 macOS 上的 XCTest 测试框架以及 Linux 的开源实现。
用法
Kotlin
Groovy
plugins {
xctest
}
构建变体
XCTest 插件理解以下维度。阅读构建变体介绍以获取更多信息。
- 目标机器 - 默认为被测试组件(如果存在)或构建主机(否则)
-
目标机器表示应用程序预期运行的机器。目标机器由其操作系统和架构标识。Gradle 使用目标机器来决定根据主机上的可用性选择哪个工具链。
目标机器可以如下配置
Kotlin
Groovy
xctest {
targetMachines = listOf(machines.linux.x86_64, machines.macOS.x86_64)
}
Tasks
以下图表显示了此插件添加的 tasks 之间的关系。

变体相关的 Tasks
XCTest 插件根据测试组件的变体创建 tasks。阅读构建变体介绍以获取更多信息。以下图表显示了变体相关 tasks 之间的关系。

compileTestVariantSwift
(例如compileTestSwift
) - SwiftCompile-
依赖于:所有为编译贡献源文件的 tasks :: 使用选定的编译器编译 Swift 源文件。
linkTestVariant
(例如linkTest
) - LinkMachOBundle (在 macOS 上) 或 LinkExecutable (在 Linux 上)-
依赖于:所有为链接可执行文件贡献的 tasks,包括来自通过项目依赖关系和被测试组件解析的项目的
linkVariant
和createVariant
tasks :: 使用选定的链接器从编译的对象文件链接可执行文件。 installTestVariant
(例如installTest
) - InstallXCTestBundle (在 macOS 上) 或 InstallExecutable (在 Linux 上)-
依赖于:
linkTestVariant
和所有为可执行文件的运行时贡献的 tasks,包括来自通过项目依赖关系解析的项目的linkVariant
tasks :: 安装可执行文件及其所有运行时依赖项以便于执行。 xcTestVariant
(例如xcTest
) - XCTest-
依赖于:
installTestVariant
:: 运行已安装的可执行文件。
生命周期 Tasks
XCTest 插件将其某些 tasks 附加到基础插件章节中记录的标准生命周期 tasks — XCTest 插件会自动应用基础插件
assemble
- Task(生命周期)-
聚合 task,用于为项目中当前主机(如果存在)组装被测试组件的 debug 变体。例如,Swift 应用程序插件和 Swift 库插件将其链接和创建 tasks 附加到此生命周期 task。此 task 由基础插件添加。
test
- Task(生命周期)-
依赖于:最接近匹配构建主机的
xcTestVariant
:: 最接近匹配构建主机的变体的聚合 task,用于测试组件。 check
- Task(生命周期)-
依赖于:
test
:: 执行验证 tasks 的聚合 task,例如运行测试。一些插件将它们自己的验证 task 添加到check
。此 task 由基础插件添加。 build
- Task(生命周期)-
依赖于:
check
,assemble
:: 执行项目完整构建的聚合 tasks。此 task 由基础插件添加。 clean
- 删除-
删除构建目录及其中的所有内容,即
layout.buildDirectory
项目属性指定的路径。此 task 由基础插件添加。
依赖管理
正如 XCTest 插件创建的 tasks 一样,配置也是基于应用程序组件的变体创建的。阅读构建变体介绍以获取更多信息。下图描述了 XCTest 插件添加的配置

-
白色配置是用户应该用来声明依赖的配置
-
蓝色配置,也称为可解析配置(用 (R) 表示),是组件内部使用的
以下配置用于声明依赖
testImplementation
-
用于声明测试组件所有变体的实现依赖。您应该在此处声明任何变体的依赖。请注意,此配置继承在被测试组件(库或应用程序)上声明的所有依赖。
testVariantExecutableImplementation
(例如testExecutableImplementation
) 扩展testImplementation
-
用于声明测试组件特定变体的实现依赖。您应该在此处声明特定变体的依赖。
没有消费者可以用于此插件的配置。
以下配置由测试组件自身使用
swiftCompileTestVariant
(例如swiftCompileTest
) 扩展testVariantExecutableImplementation
-
用于编译测试组件。此配置包含测试组件的编译模块,因此在调用 Swift 编译器编译它时使用。
nativeLinkTestVariant
(例如nativeLinkTest
) 扩展testVariantExecutableImplementation
-
用于链接测试组件。此配置包含测试组件的库,因此在调用 Swift 链接器链接它时使用。
nativeRuntimeTestVariant
(例如nativeRuntimeTest
) 扩展testVariantExecutableImplementation
-
用于执行测试组件。此配置包含测试组件的运行时库。
约定
XCTest 插件为源和 tasks 添加了约定,如下所示。
项目布局
XCTest 插件假定项目布局如下所示。这些目录都不需要存在或包含任何内容。XCTest 插件将编译它找到的任何内容,并处理任何缺失的内容。
src/test/swift
-
扩展名为 .swift 的 Swift 源代码
您可以通过配置 xctest
脚本块上的 source
来配置项目布局。
compileTestVariantSwift
Task
XCTest 插件为要构建的测试组件的每个变体添加一个 SwiftCompile 实例(例如,compileTestSwift
)。阅读构建变体介绍以获取更多信息。下面显示了一些最常见的配置选项。
compilerArgs |
[] |
debuggable |
|
modules |
|
macros |
[] |
objectFileDir |
|
optimized |
|
source |
|
targetPlatform |
从二进制文件的 |
toolChain |
linkTestVariant
Task
XCTest 插件在 macOS 上为每个测试组件变体添加一个 LinkMachOBundle 实例,或在 Linux 上添加一个 LinkExecutable 实例 - 例如 linkTest
。阅读构建变体介绍以获取更多信息。下面显示了一些最常见的配置选项。
macOS
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
从二进制文件的 |
toolChain |
Linux
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
从二进制文件的 |
toolChain |
installTestVariant
Task
XCTest 插件在 macOS 上为每个测试组件变体添加一个 InstallXCTestBundle 实例,或在 Linux 上添加一个 InstallExecutable 实例 - 例如 installTest
。阅读构建变体介绍以获取更多信息。无需在 task 上配置任何属性。
xcTestVariant
Task
binResultDir |
|
ignoreFailures |
|
reports |
|
runScriptFile |
|
testInstallDirectory |
|
workingDirectory |
|