XCTest 插件提供了与 macOS 上的 XCTest 测试框架以及 Linux 的开源实现集成的任务、配置和约定。
用法
plugins {
xctest
}
plugins {
id 'xctest'
}
构建变体
XCTest 插件理解以下维度。有关更多信息,请阅读构建变体简介。
- 目标机器 - 默认为被测组件(如果存在)或构建主机(否则)
-
目标机器表示应用程序期望运行的机器。目标机器由其操作系统和架构标识。Gradle 使用目标机器根据主机机器的可用性来决定选择哪个工具链。
目标机器可以按如下方式配置
xctest {
targetMachines = listOf(machines.linux.x86_64, machines.macOS.x86_64)
}
xctest {
targetMachines = [
machines.linux.x86_64,
machines.macOS.x86_64
]
}
任务
下图显示了此插件添加的任务之间的关系。
依赖变体的任务
XCTest 插件根据测试组件的变体创建任务。有关更多信息,请阅读构建变体简介。下图显示了依赖变体的任务之间的关系。
compileTestVariantSwift(例如compileTestSwift) - SwiftCompile-
依赖于:所有为编译提供源文件的任务:: 使用选定的编译器编译 Swift 源文件。
linkTestVariant(例如linkTest) - LinkMachOBundle (在 macOS 上) 或 LinkExecutable (在 Linux 上)-
依赖于:所有有助于链接可执行文件的任务,包括通过项目依赖项解析的项目中的
linkVariant和createVariant任务以及被测组件 :: 使用选定的链接器从编译的对象文件链接可执行文件。 installTestVariant(例如installTest) - InstallXCTestBundle (在 macOS 上) 或 InstallExecutable (在 Linux 上)-
依赖于:
linkTestVariant和所有有助于可执行文件运行时的任务,包括通过项目依赖项解析的项目中的linkVariant任务 :: 安装可执行文件及其所有运行时依赖项,以便于执行。 xcTestVariant(例如xcTest) - XCTest-
依赖于:
installTestVariant:: 运行已安装的可执行文件。
生命周期任务
XCTest 插件将其一些任务附加到基本插件章节中记录的标准生命周期任务——XCTest 插件会自动应用这些任务
assemble- 任务(生命周期)-
在项目中为当前主机(如果存在)组装被测组件的调试变体的聚合任务。例如,Swift 应用程序插件和Swift 库插件将其链接和创建任务附加到此生命周期任务。此任务由基本插件添加。
test- 任务(生命周期)-
依赖于:与构建主机最匹配的
xcTestVariant:: 与构建主机最匹配的变体用于测试组件的聚合任务。 check- 任务(生命周期)-
依赖于:
test:: 执行验证任务(例如运行测试)的聚合任务。一些插件将其自己的验证任务添加到check。此任务由基本插件添加。 build- 任务(生命周期)-
依赖于:
check,assemble:: 执行项目完整构建的聚合任务。此任务由 Base 插件添加。 clean- 删除-
删除构建目录及其中的所有内容,即
layout.buildDirectory项目属性指定的路径。此任务由 Base 插件添加。
依赖管理
与 XCTest 插件创建的任务一样,配置是根据应用程序组件的变体创建的。有关更多信息,请阅读构建变体简介。下图描述了 XCTest 插件添加的配置
-
白色配置是用户应该用来声明依赖项的配置
-
蓝色配置,也称为可解析配置,用 (R) 表示,是组件内部使用的配置
以下配置用于声明依赖项
testImplementation-
用于声明测试组件所有变体的实现依赖项。您应该在此处声明任何变体的依赖项。请注意,此配置继承了被测组件(库或应用程序)上声明的所有依赖项。
testVariantExecutableImplementation(例如testExecutableImplementation) 扩展testImplementation-
用于声明测试组件特定变体的实现依赖项。您应该在此处声明特定变体的依赖项。
此插件没有可供消费者使用的配置。
以下配置由测试组件本身使用
swiftCompileTestVariant(例如swiftCompileTest) 扩展testVariantExecutableImplementation-
用于编译测试组件。此配置包含测试组件的编译模块,因此在调用 Swift 编译器编译它时使用。
nativeLinkTestVariant(例如nativeLinkTest) 扩展testVariantExecutableImplementation-
用于链接测试组件。此配置包含测试组件的库,因此在调用 Swift 链接器链接它时使用。
nativeRuntimeTestVariant(例如nativeRuntimeTest) 扩展testVariantExecutableImplementation-
用于执行测试组件。此配置包含测试组件的运行时库。
约定
XCTest 插件为源和任务添加了约定,如下所示。
项目布局
XCTest 插件假定如下所示的项目布局。这些目录都不需要存在或包含任何内容。XCTest 插件将编译它找到的任何内容,并处理任何缺失的内容。
src/test/swift-
带有
.swift扩展名的 Swift 源
您可以通过配置 xctest 脚本块上的 source 来配置项目布局。
compileTestVariantSwift 任务
XCTest 插件为要构建的测试组件的每个变体添加一个 SwiftCompile 实例(例如 compileTestSwift)。有关更多信息,请阅读构建变体简介。下面显示了一些最常见的配置选项。
| compilerArgs |
[] |
| debuggable |
|
| modules |
|
| macros |
[] |
| objectFileDir |
|
| optimized |
|
| source |
|
| targetPlatform |
从二进制文件的 |
| toolChain |
linkTestVariant 任务
XCTest 插件为测试组件的每个变体添加一个 macOS 上的 LinkMachOBundle 实例或 Linux 上的 LinkExecutable 实例 - 例如 linkTest。有关更多信息,请阅读构建变体简介。下面显示了一些最常见的配置选项。
macOS
| debuggable |
|
| libs |
|
| linkedFile |
|
| linkerArgs |
[] |
| source |
|
| targetPlatform |
从二进制文件的 |
| toolChain |
Linux
| debuggable |
|
| libs |
|
| linkedFile |
|
| linkerArgs |
[] |
| source |
|
| targetPlatform |
从二进制文件的 |
| toolChain |
installTestVariant 任务
XCTest 插件为测试组件的每个变体添加一个 macOS 上的 InstallXCTestBundle 实例或 Linux 上的 InstallExecutable 实例 - 例如 installTest。有关更多信息,请阅读构建变体简介。无需配置任务上的任何属性。
xcTestVariant 任务
| binResultDir |
|
| ignoreFailures |
|
| reports |
|
| runScriptFile |
|
| testInstallDirectory |
|
| workingDirectory |
|