標籤:style blog http color io os ar strong 檔案
對於如何在VS2013中進行Boost單元測試,這方面資料太少。自己也因此走了不少彎路。下文將會闡述一下如何在VS2013中進行Boost單元測試。
在開始Boost單元測試之前,我們需要先安裝VS2013外掛程式Boost Unit Test Adapter (Update 3) 以及編譯Boost庫。Boost Unit Test Adapte可以在VS2013中的“工具->擴充與更新”中找到並安裝。對於Boost Unit Test Adapter所支援的Boost庫版本請參考網頁。我選擇的是版本號碼為1.55.0的Boost庫(可以在其官網下載得到)。在編譯Boost庫的時候,可以參考教程及博文。我選擇的是完全編譯(bjam --toolset=msvc-12.0 --build-type=complete)。
下文以幾個步驟來闡述:
1. 建立解決方案及工程
接下來,我們建立一個BoostUnitTest解決方案,然後在該方案下添加(滑鼠右擊解決方案建立項目)兩個項目。第一個項目是空的“WIN32”項目“Tested”,另一個是“Boost Unit Test Project”項目(建立項目->模板->Visual C++->Test下)“BoostUnitTest”。如:
2. 在被測試工程中添加檔案
在Tested工程中添加一個標頭檔tested.h及源檔案tested.cpp. 具體代碼如下
1 #include <iostream> 2 3 using namespace std; 4 5 class Tested 6 { 7 public: 8 9 Tested();10 virtual ~Tested();11 int add(const int a, const int b);12 13 private:14 15 };tested.h
1 #include "tested.h" 2 3 Tested::Tested() 4 { 5 6 } 7 8 Tested::~Tested() 9 {10 11 }12 13 int Tested::add(const int a, const int b)14 {15 return a + b;16 }tested.cpp
在這裡,我們並不需要建立一個main函數對這個類tested進行測試(因為我們已經有單元測試了),但一個程式預設是需要main函數的,所以在需要在Tested項目屬性中進行這樣的設定(“配置類型”改為“動態庫(.dll)”見):
接著,“產生”該工程,產生tested.obj檔案。
3. 配置Boost單元測試工程
建立的Boost單元測試工程中有兩個源檔案“BoostUnitTestSample.cpp”及“BoostUnitTest.cpp”(還有stdafx.h、stdafx.cpp、targetver.h),前一個檔案是範例,可以不要,後一個檔案可以當作我們的單元測試源檔案。
先對該工程進行配置:
1)添加“平台工具集”為"Visual Studio 2013 (v120)",見:
2)添加包含Boost庫的根目錄(在我電腦上是D:\boots_1_55_0),見:
3)添加Boost庫目錄及待測試工程的.obj檔案所在目錄,見:
4)添加“附加依賴項”“tested.obj”,見:
4. 進行Boost單元測試
註:我們在這時只進行簡單的單元測試,更加複雜的測試請參考文章最後給出的連結。
在BoostUnitTest工程中的檔案“BoostUnitTest.cpp”(也可建立)添加如下代碼:
1 #define BOOST_TEST_MODULE Example // 主測試套件,一個測試專案中只能有一個主測試套件 2 3 #include "stdafx.h" 4 #include "D:\VSProject\BoostUnitTest\BoostUnitTest\Tested\tested.h" // 待測工程標頭檔 5 6 BOOST_AUTO_TEST_SUITE(Tested_test) // 測試套件 7 8 BOOST_AUTO_TEST_CASE( BoostUnitTest ) // 測試案例 9 {10 // TODO: Your test code here11 Tested tmpTested;12 BOOST_WARN(tmpTested.add(2, 2) == 4); // WARN型預言檢測13 BOOST_CHECK(tmpTested.add(2, 2) == 4); // CHECK型預言檢測14 BOOST_REQUIRE(tmpTested.add(2, 2) == 4); // REQUIRE型預言檢測15 }16 17 BOOST_AUTO_TEST_SUITE_END()
點擊“產生->產生解決方案”(預先開啟“測試->視窗->測試資源管理員”)可以看到在“測試資源管理員”中出現了“BoostUnitTest”這個單元測試用例,如:
點擊“全部運行”,可以看到該測試案例變綠,說明測試通過,如:
如果我們將“BoostUnitTest.cpp”中的第13行改成:
BOOST_CHECK(tmpTested.add(2, 2) == 3);
單元測試運行結果是不通過,如:
至此,如何進行一個簡單的Boost單元測試的過程就完成了。如果要進行更複雜的測試,可以參考官方文檔。
還有一些個人覺得比較好的參考資料:
Boost Test Library 中文手冊;
DeveloperWorks的“瞭解Boost單元測試架構”;
博文“單元測試分享”;
博文“Boost學習總結(C++)”。
如何在VS2013中進行Boost單元測試