XCTest 外掛與設定快取不相容。 |
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
:: 執行專案完整建置的彙總工作。此工作是由 基礎外掛程式 新增。 clean
- 刪除-
刪除建置目錄及其中的所有內容,也就是
layout.buildDirectory
專案屬性所指定的路徑。此任務是由 基本外掛 所新增。
相依性管理
就像 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 |
|