原生生態系統中的測試形式多樣。
有不同的測試函式庫和框架,以及許多不同類型的測試。所有這些都需要成為建置的一部分,無論它們是頻繁執行還是不頻繁執行。本章致力於解釋 Gradle 如何處理建置之間和建置內的不同需求,並重點介紹它如何與基於可執行檔的測試框架(例如 Google Test)整合。
與Java 和 JVM 專案中的測試相比,Gradle 中 C++ 專案的測試相當有限。在本章中,我們將說明如何控制測試的執行方式(測試執行)。
但首先,我們先來看看 Gradle 中原生測試的基本概念。
基本概念
所有 C++ 測試都圍繞著單一工作類型:RunTestExecutable。這會執行使用任何測試框架建置的單一測試可執行檔,並使用可執行檔的退出代碼來斷言執行是否成功。測試案例結果不會被收集,也不會產生報告。
為了運作,RunTestExecutable 工作類型只需要一項資訊
-
在哪裡找到已建置的測試可執行檔(屬性:RunTestExecutable.getExecutable())
當您使用 C++ 單元測試外掛程式 時,您將自動獲得以下內容
-
專用的 unitTest 擴充功能,用於配置測試組件及其變體
-
類型為 RunTestExecutable 的
run
工作,用於執行測試可執行檔
測試外掛程式會適當地配置所需的資訊。此外,它們還將 run
工作附加到 check
生命周期工作。它還會建立 testImplementation
相依性配置。僅在測試編譯、連結和執行時期需要的相依性可以新增至此配置。unitTest
腳本區塊的行為與 application
或 library
腳本區塊類似。
RunTestExecutable 工作有許多配置選項。我們將在本章的其餘部分介紹其中一些選項。
測試執行
Gradle 在單獨的(「forked」)程序中執行測試。
您可以透過 RunTestExecutable 工作上的幾個屬性來控制測試程序的啟動方式,包括以下屬性
ignoreFailures
- 預設值:false-
如果此屬性為
true
,即使某些測試失敗,Gradle 也會在測試完成後繼續專案的建置。請注意,預設情況下,RunTestExecutable 工作類型始終執行其偵測到的每個測試,而與此設定無關。
有關所有可用配置選項的詳細資訊,請參閱 RunTestExecutable。