• <menu id="w2i4a"></menu>
  • logo Visual Studio系列教程

    文檔首頁(yè)>>Visual Studio系列教程>>Visual Studio 使用教程:在Visual Studio中編寫C / C ++的單元測(cè)試

    Visual Studio 使用教程:在Visual Studio中編寫C / C ++的單元測(cè)試


    Visual Studio 是功能完備的 IDE,可用于編碼、調(diào)試、測(cè)試和部署到任何平臺(tái),Visual Studio使用 .NET 開發(fā) iOS、Android 和 Web 應(yīng)用和游戲。

    點(diǎn)擊下載Visual Studio正式版

    您可以使用“ 測(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中使用的任何框架編寫自己的測(cè)試適配器。測(cè)試適配器可以將單元測(cè)試與“ 測(cè)試資源管理器”窗口集成在一起。在Visual Studio Marketplace上可以使用幾個(gè)第三方適配器。

    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)目:

    VIsual Studio 2019中的C ++測(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)目。

    運(yùn)行測(cè)試之前,請(qǐng)先測(cè)試瀏覽器


    注意: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è)試失敗:

    測(cè)試運(yùn)行后的測(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è)試。
    始化后,您可以在每個(gè)單元測(cè)試上方看到測(cè)試狀態(tài)圖標(biāo)。
    C ++ CodeLens圖標(biāo)


    單擊該圖標(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è)诰€客服】

    慧聚IT


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();