XCTest 外掛程式提供了用於與 macOS 上的 XCTest 測試框架以及 Linux 的開源實作整合的 Task、配置和慣例。
用法
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
]
}
Task
下圖顯示了此外掛程式新增的 Task 之間的關係。

依變體而定的 Task
XCTest 外掛程式根據測試組件的變體建立 Task。 請閱讀 建置變體簡介 以取得更多資訊。 下圖顯示了依變體而定的 Task 之間的關係。

compileTestVariantSwift
(例如compileTestSwift
) - SwiftCompile-
依賴於:所有向編譯貢獻原始碼檔案的 Task :: 使用選定的編譯器編譯 Swift 原始碼檔案。
linkTestVariant
(例如linkTest
) - LinkMachOBundle (在 macOS 上) 或 LinkExecutable (在 Linux 上)-
依賴於:所有向連結可執行檔貢獻的 Task,包括來自通過專案相依性和受測組件解析的專案的
linkVariant
和createVariant
Task :: 使用選定的連結器從編譯後的物件檔案連結可執行檔。 installTestVariant
(例如installTest
) - InstallXCTestBundle (在 macOS 上) 或 InstallExecutable (在 Linux 上)-
依賴於:
linkTestVariant
和所有向可執行檔的執行期貢獻的 Task,包括來自通過專案相依性解析的專案的linkVariant
Task :: 安裝可執行檔及其所有執行期相依性,以便於執行。 xcTestVariant
(例如xcTest
) - XCTest-
依賴於:
installTestVariant
:: 執行已安裝的可執行檔。
生命週期 Task
XCTest 外掛程式將其某些 Task 附加到 基礎外掛程式章節 中記錄的標準生命週期 Task — XCTest 外掛程式會自動應用這些 Task
assemble
- Task (生命週期)-
彙總 Task,用於組裝專案中目前主機的受測組件的 debug 變體(如果存在)。 例如,Swift Application 外掛程式 和 Swift Library 外掛程式 將其連結和建立 Task 附加到此生命週期 Task。 此 Task 由 基礎外掛程式 新增。
test
- Task (生命週期)-
依賴於:與建置主機最接近匹配的
xcTestVariant
:: 最接近匹配建置主機的變體的彙總 Task,用於測試組件。 check
- Task (生命週期)-
依賴於:
test
:: 執行驗證 Task 的彙總 Task,例如執行測試。 某些外掛程式將其自己的驗證 Task 新增到check
。 此 Task 由 基礎外掛程式 新增。 build
- Task (生命週期)-
依賴於:
check
、assemble
:: 執行專案完整建置的彙總 Task。 此 Task 由 基礎外掛程式 新增。 clean
- Delete-
刪除建置目錄及其中的所有內容,即
layout.buildDirectory
專案屬性指定的路徑。 此 Task 由 基礎外掛程式 新增。
相依性管理
就像 XCTest 外掛程式建立的 Task 一樣,配置是根據應用程式組件的變體建立的。 請閱讀 建置變體簡介 以取得更多資訊。 下圖描述了 XCTest 外掛程式新增的配置

-
白色配置是用戶應該用來宣告相依性的配置
-
藍色配置,也稱為可解析配置,以 (R) 表示,是組件內部的,供其自身使用
以下配置用於宣告相依性
testImplementation
-
用於宣告測試組件所有變體的實作相依性。 您應該在此處宣告任何變體的相依性。 請注意,此配置繼承在受測組件(函式庫或應用程式)上宣告的所有相依性。
testVariantExecutableImplementation
(例如testExecutableImplementation
) 擴展了testImplementation
-
用於宣告測試組件特定變體的實作相依性。 您應該在此處宣告特定變體的相依性。
沒有消費者可以使用的此外掛程式的配置。
以下配置由測試組件本身使用
swiftCompileTestVariant
(例如swiftCompileTest
) 擴展了testVariantExecutableImplementation
-
用於編譯測試組件。 此配置包含測試組件的編譯模組,因此在調用 Swift 編譯器來編譯它時使用。
nativeLinkTestVariant
(例如nativeLinkTest
) 擴展了testVariantExecutableImplementation
-
用於連結測試組件。 此配置包含測試組件的函式庫,因此在調用 Swift 連結器來連結它時使用。
nativeRuntimeTestVariant
(例如nativeRuntimeTest
) 擴展了testVariantExecutableImplementation
-
用於執行測試組件。 此配置包含測試組件的執行期函式庫。
慣例
XCTest 外掛程式為來源和 Task 新增了慣例,如下所示。
專案版面配置
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 |
|