在 Visual Studio 中使用 C++ 的 Boost.Test
在 Visual Studio 2017 和更新版本中,Boost.Test 測試配接器已整合至 Visual Studio IDE。 這是使用 C++ 的桌面開發工作負載的元件。
若您尚未安裝 [使用 C++ 進行桌面開發] 工作負載,請開啟 Visual Studio 安裝程式。 選取 [使用 C++ 的桌面開發] 工作負載,然後選擇 [修改] 按鈕。
安裝 Boost
Boost.Test 需要 Boost! 如果您未安裝 Boost,建議您使用 vcpkg 套件管理員。
請遵循 Vcpkg:適用於 Windows 的 C++ 套件管理員中的指示安裝 vcpkg (如果目前沒有)。
安裝 Boost.Test 動態或靜態程式庫:
執行
vcpkg install boost-test
以安裝 Boost.Test 動態程式庫。-或-
執行
vcpkg install boost-test:x86-windows-static
以安裝 Boost.Test 靜態程式庫。
執行
vcpkg integrate install
設定 Visual Studio 和程式庫,並包含 Boost 標頭和二進位檔的路徑。
您可以選擇如何在 Visual Studio 中設定方案內的測試:您可以在測試的專案中包含測試程式碼,也可以為測試建立個別的測試專案。 每個選擇都有優缺點。
在專案中新增測試
在 Visual Studio 2017 15.6 版和更新版本中,您可以將項目範本新增至專案中進行測試。 測試與程式碼都存在於相同的專案中。 您必須建立個別的組建組態,才能產生測試組建。 而且,您必須讓偵錯和發行組建不進行測試。
在 Visual Studio 2017 15.5 版中,沒有預先設定的測試專案或項目範本可供 Boost.Test 使用。 使用指示來建立及設定個別的測試專案。
建立 Boost.Test 項目
若要為您的測試建立 .cpp 檔案,請在 [方案總管] 中的專案節點上按一下滑鼠右鍵,並選擇 [新增] > [新增項目]>。
在 [新增項目] 對話方塊中,展開 [已安裝] > [Visual C++] > [測試]>>。 選取 [Boost.Test],然後選擇 [新增] 以將 Test.cpp 新增至您的專案。
新的 Test.cpp 檔案包含樣本測試方法。 您可以在此檔案中包含您自己的標頭檔,並未您的應用程式撰寫測試。
測試檔案也會使用巨集來定義測試組態的新 main
常式。 如果您現在建置專案,您會看到 LNK2005 錯誤,例如「已在 main.obj 中定義_main。」
建立及更新組建組態
若要建立測試組態,請在功能表列上,選取 [建置] > [組態管理員]>。 在 [組態管理員] 對話方塊中,開啟 [作用中解決方案組態] 下的下拉式清單,然後選擇 [新增]。 在 [新增解決方案組態] 對話方塊中,輸入名稱,例如 "Debug UnitTests"。 在 [複製設定來源] 下,選取 [偵錯],然後選擇 [確定]。
從偵錯和發行組態中排除測試程式碼:在 [方案總管] 中,以滑鼠右鍵按一下 Test.cpp,並選取 [屬性]。 在 [屬性頁面] 對話方塊中,在 [設定] 下拉式清單中,選取 [所有設定]。 選取 [設定屬性] > [一般]>,並開啟 [從組建排除] 屬性的下拉式清單。 選取 [是],然後選擇 [套用],以儲存您的變更。
若要在 Debug UnitTests 設定中包含測試程式碼,請在 [屬性頁面] 對話方塊中,在 [設定] 下拉式清單中,選取 Debug UnitTests。 在 [從組建排除] 屬性中,選取 [否],然後選擇 [確定],以儲存您的變更。
從 Debug UnitTests 設定中排除主要程式碼。 在 [方案總管] 中,以滑鼠右鍵按一下包含
main
函式的檔案,並選取 [屬性]。 在 [屬性頁面] 對話方塊中,在 [設定] 下拉式清單中,選取 [Debug UnitTests]。 選取 [設定屬性] > [一般]>,並開啟 [從組建排除] 屬性的下拉式清單。 選取 [是],然後選擇 [確定],以儲存您的變更。將 [解決方案設定] 設定為 Debug UnitTests,然後建置您的專案,以便啟用 [測試總管] 以探索方法。
只要您建立的設定名稱開頭為 "Debug" 或 "Release",就會自動挑選對應的 Boost.Test 程式庫。
項目範本會使用 Boost.Test 的單一標頭變體,但是您可以修改 #include 路徑以使用獨立程式庫變體。 如需詳細資訊,請參閱新增 include 指示詞。
建立個別的測試專案
在許多情況下,針對您的測試使用個別專案會比較容易。 您不需要為專案建立特殊的測試組態。 或者,從偵錯和發行組建中排除測試檔案。
建立個別的測試專案
在 [方案總管] 中,以滑鼠右鍵按一下方案節點,然後選擇 [新增]>[新增專案]。
在 [新增專案] 對話方塊中,在篩選條件下拉式清單中,選擇 [C++]、[Windows] 和 [主控台]。 選取 [主控台應用程式] 範本,然後選擇 [下一步]。
提供專案名稱,然後選擇 [建立]。
刪除 .cpp 檔案中的
main
函式。如果您是使用 Boost.Test 的單一標頭或動態程式庫版本,請移至新增 include 指示詞。 如果您是使用靜態程式庫版本,則必須執行一些額外的設定:
a. 若要編輯專案檔,請先卸載它。 在方案總管中,以滑鼠右鍵按一下專案節點,然後選擇 [卸載專案]。 然後,以滑鼠右鍵按一下專案節點,選擇 [編輯] > [名稱] > [.vcxproj]<>。
b. 在 Globals 屬性群組中新增兩行,如下所示:
<PropertyGroup Label="Globals"> .... <VcpkgTriplet>x86-windows-static</VcpkgTriplet> <VcpkgEnabled>true</VcpkgEnabled> </PropertyGroup>
c. 儲存並關閉 *.vcxproj 檔案,然後重新載入專案。
d. 若要開啟 [屬性頁],請以滑鼠右鍵按一下專案節點,選擇 [屬性]。
e. 展開 [C/C++]>[程式碼產生],然後選取 [執行階段程式庫]。 為偵錯靜態執行階段程式庫選取 /MTd,或為版本靜態執行階段程式庫選取 /MT。
f. 展開 [連結器]>[系統]。 確認 [子系統] 設為 [主控台]。
.g 選擇 [確定] 關閉屬性頁。
新增 include 指示詞
在測試的 .cpp 檔中,新增任何需要的
#include
指示詞,以便測試程式碼可以看到程式的類型和函式。 如果您使用個別的測試專案,通常程式會位於資料夾階層中的同層級層級。 如果鍵入#include "../"
,即會出現 IntelliSense 視窗,讓您選取標頭檔的完整路徑。您可以使用獨立程式庫搭配:
#include <boost/test/unit_test.hpp>
或者,使用單一標頭版本搭配:
#include <boost/test/included/unit_test.hpp>
然後定義
BOOST_TEST_MODULE
。
要讓測試可在測試總管中被探索到,下列範例便已足夠:
#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());
}
撰寫及執行測試
您現在準備好撰寫及執行 Boost Test。 如需測試巨集的資訊,請參閱 Boost Test Library 文件。 如需使用測試總管探索、執行及分組測試的資訊,請參閱使用測試總管執行單元測試。