Boost庫單元測試使用配置

2021-06-05 09:48:17 字數 4030 閱讀 7311

boost庫單元測試使用配置

boost學習書籍《boost程式庫完全開發指南》。

2版本:boost 1.48.0

3bjam工具生成

參考:編譯器:vs2005。

解壓原始檔到d:\boost_1_48_0

執行d:\boost_1_48_0\bootstrap.bat,生成bjam.exe。

4編譯boost.test模組

boost.test為單元測試模組,其他模組編譯方式相同。

test: support for ****** program testing, full unit testing, and for program execution monitoring, from gennadiy rozental.

靜態庫生成命令:bjam stage --toolset=msvc-8.0 --with-test link=static debug release

動態庫生成命令:bjam stage --toolset=msvc-8.0 --with-test link=shared debug release

預設生成位置:

include paths:d:/boost_1_48_0

library paths:d:\boost_1_48_0\stage\lib

為了使用方便,一般編譯為靜態庫。以便於最終發布程式,不需要打包boost的dll。且根據實際編譯情況,發現靜態庫編譯速度較快。

生成檔案描述。

檔名含義

編譯選項

libboost_unit_test_framework-vc80-mt-gd-1_48.lib

靜態庫,多執行緒,除錯版本 

使用靜態除錯版本c執行時庫(libcmtd.lib和libcpmtd.lib)

/mtd

libboost_unit_test_framework-vc80-mt-1_48.lib

靜態庫,多執行緒 

使用靜態版本c執行時庫(libcmt.lib和libcpmt.lib)

/mtboost_unit_test_framework-vc80-mt-gd-1_48.lib

靜態庫,多執行緒,除錯版本 

使用動態除錯版本c執行時庫(msvcrtd.lib和msvcprtd.lib)

/mdd

boost_unit_test_framework-vc80-mt-1_48.lib

靜態庫,多執行緒 

使用動態版本c執行時庫(msvcrt.lib和msvcprt.lib)

/md

5boost.test呼叫示例

boost庫的使用學習,見自帶index.htm,本例路徑為d:\boost_1_48_0\index.htm。

參考:參考:

關於單元測試的總結。

建立示例工程。

configurationproperties->c/c++->general->additional include directories路徑設定。

對應本例,設定為d:\boost_1_48_0。

configuration properties->linker->general->additionallibrary directories路徑設定。

對應本例,設定為d:\boost_1_48_0\stage\lib。

設定項configurationproperties->linker->input->additional dependencies。

debug為:libboost_unit_test_framework-vc80-mt-gd-1_48.lib。

release為:libboost_unit_test_framework-vc80-mt-1_48.lib。

boosttest.cpp原始碼如下:

#define boost_test_main

#include

#include

#include

using namespace std;

struct global_fixture

~global_fixture()

};boost_global_fixture(global_fixture);

struct assign_fixture

~assign_fixture()

vectorv;

}; boost_fixture_test_suite(s_assign, assign_fixture)

boost_auto_test_case(t_assign_1)

boost_auto_test_suite_end()

本例是個簡單的單元測試。

用來檢測vector容器,條目數是否為4,以及第三個值是否為4。

執行程式,輸出資訊為:error in "t_assign_1": check v[2] == 4 failed [3 != 4]。

檢測出第三個值不為4。

6bjam工具實用命令

參考:參考:

bjame命令

含義stage/install

stage表示只生成庫(dll和lib),install還會生成包含頭文 件的include目錄。

本人推薦使用stage,因為install生成的這個include目錄實際就是boost安裝包解壓縮後的boost目錄 (e:\sdk\boost_1_39_0\boost,只比include目錄多幾個非hpp檔案,都很小),

所以可以直接使用,而且不同的ide都可以使用同一套標頭檔案,這樣既節省編譯時間,也節省硬碟空間。

toolset

指定編譯器,可選的如borland、gcc、msvc(vc6)、msvc- 8.0(vs2005)、msvc- 9.0(vs2008)等。

--with-

只編譯指定的庫,如輸入--with-regex就只編譯regex庫了。

--stagedir/prefix=/

stage時使用stagedir,install時使用prefix, 表示編譯生成檔案的路徑。

推薦給不同的ide指定不同的目錄,如vs2008對應的是e:\sdk\boost_1_39_0\bin\vc9,

vc6對 應的是e:\sdk\boost_1_39_0\bin\vc6,否則都生成到乙個目錄下面,難以管理。

如果使用了install引數,那麼還將生成頭文 件目錄,

vc9對應的就是e:\sdk\boost_1_39_0\bin\vc9\include\boost-1_39\boost,

vc6類似(光 這路徑都這樣累贅,還是使用stage好)。

--build-dir=

編譯生成的中間檔案的路徑。

編譯的臨時檔案會放在builddir裡(這樣比較好管理,編譯完就可以把它刪除了)。

預設就在根目錄(e:\sdk \boost_1_39_0)下,目錄名為bin.v2,

等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設定。

link=static|shared

生成動態鏈結庫/靜態鏈結庫。生成動態鏈結庫需使用shared方式,生成靜態鏈結庫需使用 static方式。

一般boost庫可能都是以static方式編譯,因為最終發布程式帶著boost的dll感覺會比較累贅。

runtime-link=static|shared

動態/靜態鏈結c/c++執行時庫。同樣有shared和static兩種方 式,

這樣runtime-link和link一共可以產生4種組合方式,

各人可以根據自己的需要選擇編譯。一般link只選static的話,

只需要編譯 2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。

threading=single|multi

單/多執行緒編譯。

一般都寫多執行緒程式,當然要指定multi方式了;

如果需要編寫單線 程程式,那麼還需要編譯單執行緒庫,可以使用single方式。

debug/release

編譯debug/release版本。一般都是程式的debug版本對應庫的 debug版本,所以兩個都編譯。

python單元測試庫

python的單元測試 編寫流程 單元測試 單元測試是對單獨的 塊分別進行測試,以確保它們的正確性,單元測試主要還是由開發人員來做,其餘的整合測試和系統測試由專業的測試人員來做.python的單元測試 編寫主要記住以下幾點 1.需要匯入 unittest模組 2.需要繼承自 unittest.tes...

Google Test單元測試使用

google開源了很多實用的模組,比如google gtest google gmock google glog google gflags google ctemplate google sparsehash protobuf perftools,gtest是c 的測試模組,提供豐富的測試方法 軟...

spring單元測試使用

開發過程中單元測試是必不可少的,下面就來說一下spring單元測試的使用。很簡單,乙個示例就很清楚了。以下為源 示例 package com.cinyi.user import org.junit.test import org.junit.runner.runwith import org.spr...