Visual Studio 使用教程:在Visual Studio中編寫C / C ++的單元測(cè)試
Visual Studio 是功能完備的 IDE,可用于編碼、調(diào)試、測(cè)試和部署到任何平臺(tái),Visual Studio使用 .NET 開發(fā) iOS、Android 和 Web 應(yīng)用和游戲。
您可以使用“ 測(cè)試資源管理器”窗口來(lái)編寫和運(yùn)行C ++單元測(cè)試。它的工作方式與其他語(yǔ)言一樣。
注意:C ++不支持某些功能,例如實(shí)時(shí)單元測(cè)試,編碼的UI測(cè)試和IntelliTest。
Visual Studio包括這些C ++測(cè)試框架,無(wú)需額外下載:
- Microsoft C ++單元測(cè)試框架
- 谷歌測(cè)試
- 增強(qiáng)測(cè)試
- 測(cè)試
Visual Studio 2017及更高版本(專業(yè)版和企業(yè)版)。C ++單元測(cè)試項(xiàng)目支持CodeLens。
Visual Studio 2017及更高版本(所有版本)
- Google Test Adapter是帶有C ++工作負(fù)載的桌面開發(fā)的默認(rèn)組件。它具有一個(gè)項(xiàng)目模板,您可以將其添加到解決方案中。使用解決方案資源管理器中解決方案節(jié)點(diǎn)上的“ 添加新項(xiàng)目”右鍵菜單來(lái)添加它。它還具有可以通過“ 工具” >“ 選項(xiàng)”配置的選項(xiàng)。
- Boost.Test是包含C ++工作負(fù)載的桌面開發(fā)的默認(rèn)組件。它與Test Explorer集成在一起,但是目前沒有項(xiàng)目模板。必須手動(dòng)配置。
- CTest支持包含在C ++ CMake工具組件中,該組件是使用C ++工作負(fù)載進(jìn)行桌面開發(fā)的一部分。有關(guān)更多信息,請(qǐng)參見如何:在Visual Studio中使用CTest。
基本測(cè)試流程
以下各節(jié)顯示了入門C ++單元測(cè)試的基本步驟。Microsoft和Google Test框架的基本配置都相似。Boost.Test要求您手動(dòng)創(chuàng)建一個(gè)測(cè)試項(xiàng)目。
在Visual Studio 2019中創(chuàng)建測(cè)試項(xiàng)目
您可以在一個(gè)或多個(gè)測(cè)試項(xiàng)目中定義和運(yùn)行測(cè)試。您可以使用與要測(cè)試的代碼相同的解決方案來(lái)創(chuàng)建項(xiàng)目。要將新的測(cè)試項(xiàng)目添加到現(xiàn)有解決方案中,請(qǐng)?jiān)诮鉀Q方案資源管理器中右鍵單擊解決方案節(jié)點(diǎn)。在彈出菜單中,選擇“ 添加” >“ 新建項(xiàng)目”。將語(yǔ)言設(shè)置為C ++,然后在搜索框中輸入“ test”。下圖顯示了安裝帶有C ++的桌面開發(fā)和UWP Development工作負(fù)載時(shí)可用的測(cè)試項(xiàng)目:
在解決方案中創(chuàng)建對(duì)其他項(xiàng)目的引用
要允許訪問被測(cè)項(xiàng)目中的功能,請(qǐng)?jiān)跍y(cè)試項(xiàng)目中添加對(duì)該項(xiàng)目的引用。在解決方案資源管理器中的測(cè)試項(xiàng)目節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,以彈出菜單。選擇添加 > 參考。
鏈接到對(duì)象或庫(kù)文件
如果測(cè)試代碼沒有導(dǎo)出要測(cè)試的功能,則可以將輸出.obj或.lib文件添加到測(cè)試項(xiàng)目的依賴項(xiàng)中。
為頭文件添加#include指令
接下來(lái),在單元測(cè)試.cpp文件中,#include為任何標(biāo)頭文件添加一個(gè)指令,該標(biāo)頭文件聲明要測(cè)試的類型和功能。鍵入#include ",然后IntelliSense將激活以幫助您選擇。對(duì)其他標(biāo)題重復(fù)上述步驟。
為了避免在源文件的每個(gè)include語(yǔ)句中鍵入完整路徑,可以在Project > Properties > C / C ++ > General > Additional Include Directories中添加所需的文件夾。
編寫測(cè)試方法
注意:本節(jié)顯示了用于C / C ++的Microsoft單元測(cè)試框架的語(yǔ)法。
測(cè)試項(xiàng)目中的.cpp文件具有為您定義的存根類和方法。它們顯示了如何編寫測(cè)試代碼的示例。簽名使用TEST_CLASS和TEST_METHOD宏,這些宏使方法可以從“ 測(cè)試資源管理器”窗口中發(fā)現(xiàn)。
TEST_CLASS和TEST_METHOD是Microsoft本機(jī)測(cè)試框架的一部分。Test Explorer以類似的方式發(fā)現(xiàn)其他受支持框架中的測(cè)試方法。
TEST_METHOD返回void。要產(chǎn)生測(cè)試結(jié)果,請(qǐng)使用Assert該類中的靜態(tài)方法來(lái)根據(jù)預(yù)期結(jié)果測(cè)試實(shí)際結(jié)果。在以下示例中,假定MyClass具有一個(gè)采用的構(gòu)造函數(shù)std::string。我們可以測(cè)試構(gòu)造函數(shù)是否按預(yù)期方式初始化了該類,如下所示:
TEST_METHOD(TestClassInit) { std::string name = "Bill"; MyClass mc(name); Assert::AreEqual(name, mc.GetName()); }在前面的示例中,Assert::AreEqual調(diào)用結(jié)果確定測(cè)試是通過還是失敗。Assert類包含許多其他方法,用于比較預(yù)期結(jié)果與實(shí)際結(jié)果。
您可以向測(cè)試方法添加特征以指定測(cè)試所有者,優(yōu)先級(jí)和其他信息。然后,您可以在Test Explorer中使用這些值對(duì)測(cè)試進(jìn)行排序和分組。
運(yùn)行測(cè)試
在“ 測(cè)試”菜單上,選擇“ Windows” >“ 測(cè)試資源管理器”。下圖顯示了尚未運(yùn)行測(cè)試的測(cè)試項(xiàng)目。
注意:CTest與Test Explorer的集成尚不可用。從CMake主菜單運(yùn)行CTest測(cè)試。
如果在窗口中看不到所有測(cè)試,請(qǐng)通過在解決方案資源管理器中右鍵單擊其節(jié)點(diǎn)并選擇Build或Rebuild來(lái)構(gòu)建測(cè)試項(xiàng)目。
在“ 測(cè)試資源管理器”中,選擇“全部運(yùn)行”,或選擇要運(yùn)行的特定測(cè)試。右鍵單擊測(cè)試以獲取其他選項(xiàng),包括在啟用斷點(diǎn)的調(diào)試模式下運(yùn)行。運(yùn)行所有測(cè)試后,該窗口顯示哪些測(cè)試通過和哪些測(cè)試失敗:
對(duì)于失敗的測(cè)試,該消息提供了有助于診斷原因的詳細(xì)信息。右鍵單擊失敗的測(cè)試以彈出菜單。選擇“ 調(diào)試選定的測(cè)試”以逐步執(zhí)行發(fā)生故障的功能。
使用CodeLens(Visual Studio 2017及更高版本(專業(yè)版和企業(yè)版))
使用CodeLens,您可以快速查看單元測(cè)試的狀態(tài),而無(wú)需離開代碼編輯器。您可以通過以下任何一種方式為C ++單元測(cè)試項(xiàng)目初始化CodeLens:
- 編輯并構(gòu)建您的測(cè)試項(xiàng)目或解決方案。
- 重建您的項(xiàng)目或解決方案。
- 從“ 測(cè)試資源管理器”窗口中運(yùn)行測(cè)試。
單擊該圖標(biāo)以獲取更多信息,或者運(yùn)行或調(diào)試單元測(cè)試:
本次內(nèi)容到此就結(jié)束了,喜歡該產(chǎn)品的朋友可以點(diǎn)擊下載Visual Studio試用版免費(fèi)體驗(yàn)~
想要購(gòu)買Visual Studio正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊【咨詢?cè)诰€客服】