C++ 測試支援與設定快取不相容。

原生生態系統中的測試有許多形式。

有不同的測試函式庫和架構,以及許多不同類型的測試。所有這些都需要成為建置的一部分,無論它們執行頻率高或低。本章致力於說明 Gradle 如何處理建置之間和建置內部不同的需求,並重點說明它如何與基於可執行檔的測試架構整合,例如Google Test

Java 和 JVM 專案中的測試相比,在 Gradle 中測試 C++ 專案相當有限。在本章中,我們說明控制測試執行方式的方法(測試執行)。

但首先,我們來看一下 Gradle 中原生測試的基礎知識。

基礎

所有 C++ 測試都圍繞著單一任務類型:RunTestExecutable。這會執行使用任何測試架構建置的單一測試可執行檔,並使用可執行檔的結束代碼來斷言執行成功。測試案例結果不會收集,也不會產生任何報告。

為了運作,RunTestExecutable任務類型只需要一項資訊

當您使用 C++ 單元測試外掛程式 時,您將自動取得下列項目

  • 專用的 unitTest 擴充功能,用於設定測試元件及其變異

  • run 類型的任務 RunTestExecutable,用於執行測試可執行檔

測試外掛程式會適當地設定所需資訊片段。此外,它們會將 run 任務附加到 check 生命週期任務。它也會建立 testImplementation 相依性設定。僅在測試編譯、連結和執行階段所需的相依性可以新增到此設定。unitTest 指令碼區塊的行為類似於 applicationlibrary 指令碼區塊。

RunTestExecutable 任務有許多設定選項。我們會在本章節的其餘部分介紹其中一些選項。

測試執行

Gradle 會在個別(「分岔」)程序中執行測試。

您可以透過 RunTestExecutable 任務上的多個屬性來控制測試程序的啟動方式,包括下列項目

ignoreFailures - 預設值:false

如果此屬性為 true,Gradle 會在測試完成後繼續進行專案的建置,即使其中一些測試已失敗。請注意,預設情況下, RunTestExecutable 任務類型會執行它偵測到的每個測試,而不論此設定為何。

請參閱 RunTestExecutable,以取得所有可用設定選項的詳細資料。