對C/C++概念介紹
對***次接觸到C/C++的用戶和學(xué)者來說,了解C/C++的概念是非常重要的,那么就先說一下什么是C++語言,所謂C++語言:是一種使用非常廣泛的計算機編程語言。。。
如果使用VC6,那么直接用VC6打開VC工程文件,選擇Batch Build(***自己對工程參數(shù)重新設(shè)置一下),然后就可以在源代碼包子目錄Lib中得到我們需要的庫文件。如果使用C/C++,那么用VC8打開VC6工程文件,并按提示直接轉(zhuǎn)換成.net版本。
同樣,選擇批生成,生成我們需要的庫文件。在VC8中編譯源代碼時會出現(xiàn)編譯錯誤“#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids”,將version("7.0")改為version("8.0")即可。
在開發(fā)應(yīng)用程序過程中,我們可能會使用到很多第三方程序庫,如這里的CppUnit。為了方便,我們可以建立一個第三方程序庫的專用文件夾,并為具體的程序庫(如這里的CppUnit)建立子文件夾。然后在VC的Option中分別設(shè)置庫的頭文件路徑和庫文件連接路徑。
如果有Dll文件,則在系統(tǒng)變量PATH中加進DLL文件所在目錄,這樣,程序運行時就能搜索到該C/C++(注意,只有VC重啟后,PATH設(shè)置才會對從VC里直接運行的程序生效)。
同樣,這里我們也把CppUnit的頭文件和庫文件路徑加到VC的默認搜索路徑中。另外,需要指出,一般情況下,Dll文件是需要與生成的程序一同發(fā)布的,此時就必須將Dll文件拷貝到Project目錄中。此時,可以采取手動方式,也可以在Project的Post-Build Step中添加命令執(zhí)行拷貝動作。
在VC中使用CppUnit進行單元測試時,可以選擇CppUnit的控制臺測試作界面和圖形測試界面。控制臺界面簡潔,而圖形界面較直觀,并且借助CppUnit提供的插件可以快速定位到斷言失敗的地方。一般情況下。#t#
我們使用控制臺測試界面來測試Console程序,使用圖形測試界面來測試GUI程序,這樣測試Project不會影響被測試的Project。由于圖形測試界面的易用性,我們可能也希望用它來測試Console程序,此時稍微麻煩一點。下面分別介紹這幾種用法(以VC6為例,VC8類似)。
在下面的敘述中,把被測試Project叫做目標(biāo)Project,把被測試類叫做目標(biāo)類。使用CppUnit的Console測試界面測試Console程序
1. 創(chuàng)建一個工作區(qū)用于開發(fā)和測試,然后在該工作區(qū)中分別創(chuàng)建兩個Project,一個用于開發(fā),另一個用于測試。
2. 在測試Project中,設(shè)置如下:
(1)設(shè)置連接庫:cppunit.lib(Release版)和cppunitd.lib(Debug版),或者使用動態(tài)鏈接庫版本cppunit_dll.lib、cppunit_dll.dll和cppunitd_dll.lib、cppunitd_dll.dll;
(2)在C/C++的Code Generation中設(shè)置Use run-time library為Multithreaded Dll(Release版)和Debug Multithreaded Dll(Debug版)。
3. 為測試Project添加測試類,假如被測試的目標(biāo)類為Demo,那么可以定義一個DemoTest的測試類:
- class DemoTest: public CppUnit::TestFixture
- {
- CPPUNIT_TEST_SUITE(DemoTest); // 參數(shù)為本測試類名
- CPPUNIT_TEST(testFunc); // 參數(shù)為測試函數(shù)名,與下面聲明的測試函數(shù)對應(yīng)
- CPPUNIT_TEST_SUITE_END();
- public:
- void setUp() {
- // 在這里進行測試的初始化工作
- }
- void tearDown() {
- // 在這里進行測試完畢后的清理工作
- }
- void testFunc(); // 測試函數(shù),用來測試目標(biāo)類的某一個細節(jié)
- };
- #endif // DEMO_TEST_H
- 文件DemoTest.cpp:
- #include "DemoTest.h"
- #include "../Demo/DemoTest.h" // 這里為要測試的目標(biāo)類的頭文件路徑,因為測試時要用到Demo類
- #include <cppunit/extensions/HelperMacros.h>
- CPPUNIT_TEST_SUITE_REGISTRATION(DemoTest);
- void DemoTest::testFunc()
- {
- // 這里對Demo類進行測試,可以使用CPPUNIT_ASSERT、CPPUNIT_ASSERT_EQUAL等來斷言
- }