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

有不同的測試函式庫和框架,以及許多不同類型的測試。所有這些都需要成為建置的一部分,無論它們是頻繁執行還是不頻繁執行。本章致力於解釋 Gradle 如何處理建置之間和建置內的不同需求,並重點介紹它如何與基於可執行檔的測試框架(例如 Google Test)整合。

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

但首先,我們先來看看 Gradle 中原生測試的基本概念。

基本概念

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

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

當您使用 C++ 單元測試外掛程式 時,您將自動獲得以下內容

  • 專用的 unitTest 擴充功能,用於配置測試組件及其變體

  • 類型為 RunTestExecutablerun 工作,用於執行測試可執行檔

測試外掛程式會適當地配置所需的資訊。此外,它們還將 run 工作附加到 check 生命周期工作。它還會建立 testImplementation 相依性配置。僅在測試編譯、連結和執行時期需要的相依性可以新增至此配置。unitTest 腳本區塊的行為與 applicationlibrary 腳本區塊類似。

RunTestExecutable 工作有許多配置選項。我們將在本章的其餘部分介紹其中一些選項。

測試執行

Gradle 在單獨的(「forked」)程序中執行測試。

您可以透過 RunTestExecutable 工作上的幾個屬性來控制測試程序的啟動方式,包括以下屬性

ignoreFailures - 預設值:false

如果此屬性為 true,即使某些測試失敗,Gradle 也會在測試完成後繼續專案的建置。請注意,預設情況下,RunTestExecutable 工作類型始終執行其偵測到的每個測試,而與此設定無關。

有關所有可用配置選項的詳細資訊,請參閱 RunTestExecutable