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...