C++ 單元測試外掛程式提供與基於 C++ 可執行檔的測試框架(例如 Google Test)整合的 task、配置和慣例。
用法
plugins {
`cpp-unit-test`
}
plugins {
id 'cpp-unit-test'
}
建置變體
C++ 單元測試外掛程式理解以下維度。請閱讀建置變體簡介以取得更多資訊。
- 目標機器 - 預設為受測元件(如果存在)或建置主機(否則)
-
目標機器表示應用程式預期運行的機器。目標機器由其作業系統和架構識別。Gradle 使用目標機器來決定根據主機上的可用性選擇哪個工具鏈。
目標機器可以如下配置
unitTest {
targetMachines = listOf(machines.linux.x86_64,
machines.windows.x86, machines.windows.x86_64,
machines.macOS.x86_64)
}
unitTest {
targetMachines = [
machines.linux.x86_64,
machines.windows.x86, machines.windows.x86_64,
machines.macOS.x86_64
]
}
Task
下圖顯示此外掛程式新增的 task 之間的關係。

變體相依 Task
C++ 單元測試外掛程式根據單元測試元件的變體建立 task。請閱讀建置變體簡介以取得更多資訊。以下圖表顯示變體相依 task 之間的關係。

compileTestVariantCpp
(例如compileTestCpp
) - CppCompile-
相依於:所有為編譯貢獻原始檔的 task :: 使用選定的編譯器編譯 C++ 原始檔。
linkTestVariant
(例如linkTest
) - LinkExecutable-
相依於:所有為連結可執行檔貢獻的 task,包括來自透過專案相依性解析和受測元件的專案的
linkVariant
和createVariant
task :: 使用選定的連結器從編譯後的物件檔連結可執行檔。 installTestVariant
(例如installTest
) - InstallExecutable-
相依於:
linkTestVariant
和所有為可執行檔的運行時貢獻的 task,包括來自透過專案相依性解析的專案的linkVariant
task :: 安裝可執行檔及其所有運行時相依性,以便於執行。 runTestVariant
(例如runTest
) - RunTestExecutable-
相依於:
installTestVariant
:: 執行已安裝的可執行檔。
生命週期 Task
C++ 單元測試外掛程式將其某些 task 附加到 基礎外掛程式章節中記錄的標準生命週期 task — C++ 單元測試外掛程式會自動應用這些 task
assemble
- Task (生命週期)-
彙總 task,用於組合專案中目前主機(如果存在)的受測元件的 debug 變體。例如,C++ 應用程式外掛程式和 C++ 函式庫外掛程式將其連結和建立 task 附加到此生命週期 task。此 task 由 基礎外掛程式新增。
test
- Task (生命週期)-
相依於:最符合建置主機的
runTestVariant
:: 最符合建置主機的變體的彙總 task,用於測試元件。 check
- Task (生命週期)-
相依於:
test
:: 執行驗證 task(例如執行測試)的彙總 task。某些外掛程式會將自己的驗證 task 新增至check
。此 task 由 基礎外掛程式新增。 build
- Task (生命週期)-
相依於:
check
、assemble
:: 執行專案完整建置的彙總 task。此 task 由 基礎外掛程式新增。 clean
- Delete-
刪除建置目錄及其中的所有內容,即
layout.buildDirectory
專案屬性指定的路徑。此 task 由 基礎外掛程式新增。
相依性管理
就像 C++ 單元測試外掛程式建立的 task 一樣,配置是根據應用程式元件的變體建立的。請閱讀建置變體簡介以取得更多資訊。下圖描述 C++ 單元測試外掛程式新增的配置

-
白色配置是用戶應該用來宣告相依性的配置
-
藍色配置(也稱為可解析配置,以 (R) 表示)是元件內部的,供其自身使用
以下配置用於宣告相依性
testImplementation
-
用於宣告測試元件所有變體的實作相依性。您應該在此處宣告任何變體的相依性。請注意,此配置繼承在受測元件(函式庫或應用程式)上宣告的所有相依性。
testVariantExecutableImplementation
(例如testExecutableImplementation
) 延伸自testImplementation
-
用於宣告測試元件特定變體的實作相依性。您應該在此處宣告特定變體的相依性。
沒有消費者可以使用的此外掛程式的配置。
以下配置由單元測試本身使用
cppCompileTestVariant
(例如cppCompileTest
) 延伸自testVariantExecutableImplementation
-
用於編譯單元測試。此配置包含單元測試的編譯 include 根目錄,因此在調用 C++ 編譯器來編譯它時使用。
nativeLinkTestVariant
(例如nativeLinkTest
) 延伸自testVariantExecutableImplementation
-
用於連結單元測試。此配置包含單元測試的函式庫,因此在調用 C++ 連結器來連結它時使用。
nativeRuntimeTestVariant
(例如nativeRuntimeTest
) 延伸自testVariantExecutableImplementation
-
用於執行單元測試。此配置包含單元測試的運行時函式庫。
慣例
C++ 單元測試外掛程式新增了來源和 task 的慣例,如下所示。
專案佈局
C++ 單元測試外掛程式假設專案佈局如下所示。這些目錄都不需要存在或包含任何內容。C++ 單元測試外掛程式將編譯它找到的任何內容,並處理任何遺失的內容。
src/test/cpp
-
C++ 原始碼,副檔名為
.cpp
、.c++
或.cc
src/test/headers
-
標頭 - 編譯單元測試所需的標頭
您可以透過在 unitTest
腳本區塊上配置 source
和 privateHeaders
分別配置專案佈局。
compileTestVariantCpp
Task
C++ 單元測試外掛程式為測試元件的每個變體新增一個 CppCompile 實例來建置(例如 compileTestCpp
)。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。
compilerArgs |
[] |
debuggable |
|
includes |
|
macros |
[:] |
objectFileDir |
|
optimized |
|
positionIndependentCode |
|
source |
|
systemIncludes |
衍生自工具鏈 |
targetPlatform |
衍生自二進制的 |
toolChain |
linkTestVariant
Task
C++ 單元測試外掛程式為測試元件的每個變體新增一個 LinkExecutable 實例 - 例如 linkTest
。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
衍生自二進制的 |
toolChain |
installTestVariant
Task
C++ 單元測試外掛程式為測試元件的每個變體新增一個 InstallExecutable 實例 - 例如 installTest
。請閱讀建置變體簡介以取得更多資訊。無需在 task 上配置任何屬性。
runTestVariant
Task
C++ 單元測試外掛程式為測試元件的每個變體新增一個 RunTestExecutable 實例 - 例如 runTest
。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。
args |
|
ignoreFailures |
|