如何在VS2013中進行Boost單元測試

來源:互聯網
上載者:User

標籤: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單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.