Visual Studio 使用教程:如何在Visual Studio中使用Boost.Test for C ++
Visual Studio 是功能完備的 IDE,可用于編碼、調(diào)試、測(cè)試和部署到任何平臺(tái),Visual Studio使用 .NET 開(kāi)發(fā) iOS、Android 和 Web 應(yīng)用和游戲。
在Visual Studio 2017和更高版本中,Boost.Test測(cè)試適配器已集成到Visual Studio IDE中。 它是具有C ++工作負(fù)載的桌面開(kāi)發(fā)的組成部分。
如果您沒(méi)有安裝帶有C ++工作負(fù)載的桌面開(kāi)發(fā),請(qǐng)打開(kāi)Visual Studio安裝程序。選擇帶有C ++工作負(fù)載的桌面開(kāi)發(fā),然后選擇“修改”按鈕。
安裝Boost
Boost.Test需要Boost,如果您沒(méi)有安裝Boost,我們建議您使用Vcpkg軟件包管理器。
- 請(qǐng)遵循Vcpkg上的說(shuō)明:Windows的C ++軟件包管理器來(lái)安裝vcpkg(如果尚未安裝)。
- 安裝Boost.Test動(dòng)態(tài)或靜態(tài)庫(kù):
- 運(yùn)行vcpkg install boost-test以安裝Boost.Test動(dòng)態(tài)庫(kù)。
- 運(yùn)行vcpkg install boost-test:x86-windows-static來(lái)安裝Boost.Test靜態(tài)庫(kù)。
- 運(yùn)行vcpkg Integrated install以使用庫(kù)配置Visual Studio,并包括Boost標(biāo)頭和二進(jìn)制文件的路徑。
您可以選擇如何在Visual Studio的解決方案中配置測(cè)試:您可以將測(cè)試代碼包含在要測(cè)試的項(xiàng)目中,也可以為測(cè)試創(chuàng)建單獨(dú)的測(cè)試項(xiàng)目,兩種選擇都各有優(yōu)點(diǎn)和缺點(diǎn)。
在項(xiàng)目中添加測(cè)試
在Visual Studio 2017 15.6版和更高版本中,可以將用于測(cè)試的項(xiàng)目模板添加到項(xiàng)目中,測(cè)試和代碼都在同一個(gè)項(xiàng)目中。您必須創(chuàng)建一個(gè)單獨(dú)的構(gòu)建配置才能生成測(cè)試構(gòu)建。而且,您需要將測(cè)試排除在調(diào)試和發(fā)布版本之外。
在Visual Studio 2017版本15.5中,沒(méi)有預(yù)配置的測(cè)試項(xiàng)目或項(xiàng)目模板可用于Boost.Test。使用說(shuō)明創(chuàng)建和配置單獨(dú)的測(cè)試項(xiàng)目。
創(chuàng)建一個(gè)Boost.Test項(xiàng)目
- 要為測(cè)試創(chuàng)建.cpp文件,請(qǐng)?jiān)诮鉀Q方案資源管理器中右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“添加”>“新建項(xiàng)目”。
- 在“添加新項(xiàng)”對(duì)話框中,展開(kāi)“已安裝”>“ Visual C ++”>“測(cè)試”。選擇Boost.Test,然后選擇Add將Test.cpp添加到您的項(xiàng)目。
測(cè)試文件還使用宏為測(cè)試配置定義新的主例程。如果立即構(gòu)建項(xiàng)目,則會(huì)看到LNK2005錯(cuò)誤,例如“ _main已經(jīng)在main.obj中定義”。
創(chuàng)建和更新構(gòu)建配置
- 要?jiǎng)?chuàng)建測(cè)試配置,請(qǐng)?jiān)诓藛螜谏?,選擇“構(gòu)建”>“配置管理器”。在“配置管理器”對(duì)話框中,打開(kāi)“活動(dòng)解決方案配置”下的下拉列表,然后選擇“新建”。在“新解決方案配置”對(duì)話框中,輸入一個(gè)名稱,例如“ Debug UnitTests”。在“從以下位置復(fù)制設(shè)置”下,選擇“調(diào)試”,然后選擇“確定”。
- 從調(diào)試和發(fā)布配置中排除測(cè)試代碼:在解決方案資源管理器中,右鍵單擊Test.cpp并選擇“屬性”。在“屬性頁(yè)面”對(duì)話框中,在“配置”下拉列表中選擇“所有配置”。選擇“配置屬性”>“常規(guī)”,然后打開(kāi)“從構(gòu)建中排除”屬性的下拉列表。選擇是,然后選擇應(yīng)用保存更改。
- 要將測(cè)試代碼包含在Debug UnitTests配置中,請(qǐng)?jiān)凇皩傩皂?yè)”對(duì)話框的“配置”下拉列表中選擇“ Debug UnitTests”。在“排除在內(nèi)部版本”屬性中選擇“否”,然后選擇“確定”保存更改。
- 從調(diào)試單元測(cè)試配置中排除主要代碼。在解決方案資源管理器中,右鍵單擊包含您的主要功能的文件,然后選擇“屬性”。在“屬性頁(yè)”對(duì)話框中,在“配置”下拉列表中選擇“調(diào)試單元測(cè)試”。選擇“配置屬性”>“常規(guī)”,然后打開(kāi)“從構(gòu)建中排除”屬性的下拉列表。選擇是,然后選擇確定以保存更改。
- 將解決方案配置設(shè)置為Debug UnitTests,然后構(gòu)建項(xiàng)目以使Test Explorer能夠發(fā)現(xiàn)方法。
只要您創(chuàng)建的配置名稱以“ Debug”或“ Release”開(kāi)頭,就會(huì)自動(dòng)獲取相應(yīng)的Boost.Test庫(kù)。項(xiàng)目模板使用Boost.Test的單頭變體,但是您可以修改#include路徑以使用獨(dú)立庫(kù)的變體。
創(chuàng)建一個(gè)單獨(dú)的測(cè)試項(xiàng)目
在許多情況下,使用單獨(dú)的項(xiàng)目進(jìn)行測(cè)試會(huì)更容易,您無(wú)需為項(xiàng)目創(chuàng)建特殊的測(cè)試配置?;蛘?,從“調(diào)試和發(fā)布”版本中排除測(cè)試文件。
創(chuàng)建一個(gè)單獨(dú)的測(cè)試項(xiàng)目
- 在解決方案資源管理器中,右鍵單擊解決方案節(jié)點(diǎn),然后選擇“添加”>“新建項(xiàng)目”。
- 在“添加新項(xiàng)目”對(duì)話框中,在過(guò)濾器下拉列表中選擇“ C ++”,“ Windows”和“控制臺(tái)”。選擇控制臺(tái)應(yīng)用程序模板,然后選擇下一步。
- 為項(xiàng)目命名,然后選擇創(chuàng)建。
- 刪除.cpp文件中的主要功能。
- 如果您使用的是Boost.Test的單頭或動(dòng)態(tài)庫(kù)版本,請(qǐng)轉(zhuǎn)到“添加包含”指令。如果使用的是靜態(tài)庫(kù)版本,則必須進(jìn)行一些其他配置:
- 要編輯項(xiàng)目文件,請(qǐng)首先將其卸載。在解決方案資源管理器中,右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“卸載項(xiàng)目”。然后,右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“編輯<名稱> .vcxproj”。
- 將兩行添加到Globals屬性組,如下所示:
<PropertyGroup Label="Globals"> .... <VcpkgTriplet>x86-windows-static</VcpkgTriplet> <VcpkgEnabled>true</VcpkgEnabled> </PropertyGroup>
- 保存并關(guān)閉* .vcxproj文件,然后重新加載該項(xiàng)目。
- 要打開(kāi)“屬性頁(yè)”,請(qǐng)?jiān)陧?xiàng)目節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,然后選擇“屬性”。
- 展開(kāi)C / C ++>代碼生成,然后選擇運(yùn)行時(shí)庫(kù)。選擇/ MTd調(diào)試靜態(tài)運(yùn)行時(shí)庫(kù),或/ MT釋放靜態(tài)運(yùn)行時(shí)庫(kù)。
- 展開(kāi)鏈接器>系統(tǒng),驗(yàn)證子系統(tǒng)設(shè)置為控制臺(tái)。
- 選擇確定以關(guān)閉屬性頁(yè)。
添加包含指令
在您的測(cè)試.cpp文件中,添加所有需要的#include指令,以使程序的類型和功能對(duì)測(cè)試代碼可見(jiàn)。如果您使用的是單獨(dú)的測(cè)試項(xiàng)目,則該程序通常位于文件夾層次結(jié)構(gòu)中的同級(jí)級(jí)別。如果鍵入#include "../",將出現(xiàn)IntelliSense窗口,使您可以選擇頭文件的完整路徑。
您可以通過(guò)以下方式使用獨(dú)立庫(kù):
#include <boost/test/unit_test.hpp>
或者,將單頭版本用于:
#include <boost/test/included/unit_test.hpp>然后,定義BOOST_TEST_MODULE。
以下示例足以使您可以在“測(cè)試資源管理器”中發(fā)現(xiàn)該測(cè)試:
#define BOOST_TEST_MODULE MyTest #include <boost/test/included/unit_test.hpp\> //single-header #include "../MyProgram/MyClass.h" // project being tested #include <string> BOOST_AUTO_TEST_CASE(my_boost_test) { std::string expected_value = "Bill"; // assume MyClass is defined in MyClass.h // and get_value() has public accessibility MyClass mc; BOOST_CHECK(expected_value == mc.get_value()); }最后,您可以編寫和運(yùn)行Boost測(cè)試了。
推薦文章:
在Visual Studio中編寫C / C ++的單元測(cè)試
想要購(gòu)買Visual Studio正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊【咨詢?cè)诰€客服】