Eclipse下撰寫CppUnit的測試程式

5 篇文章 0 订阅
Author: surt
version 0.1

Eclipse除了可以以CDT開發C++程式之外,我們也可以在Eclipse下撰寫CppUnit的測試程式,其中關於CDT開發C++程式的部份,可以參考sungo的"[教學] Window+GCC+CDT用Eclipse開發C、C++"一文。而這份文件則是以撰寫CPPUnit為主。

OS:Windows XP Professional SP2
Version:Eclipse 3.0+CDT2.02+MinGW3.1.0

這份文件的前提是必須先安裝好Eclipse、CDT及MinGW這三個部份,由於會與之前的教學文件重複,故在此不再贅述。接下來即開始介紹整個步驟。

一、安裝Cygwin
請至http://www.cygwin.com/下載安裝程式
下載後請直接安裝,除了選擇站台及安裝方式外,均只要按下一步即可安裝完成。

安裝後請在各環境變數新增以下幾個參數
PATH: C:/cygwin/bin
LIBRARY_PATH :C:/cygwin/lib

均設定完後,即可以開始執行cygwin,如下圖,即出現類似Linux環境下的command mode
surt@kurthsu ~
$

二、安裝CPPUnit
1. 下載CPPUnit請至http://sourceforge.net/projects/cppunit下載
目前最新的版本為1.10.2,下載後將其複製至C:/cygwin/home/surt的目錄下
並輸入如下指令以解壓縮為cppunit-1.10.2目錄
surt@kurthsu ~
$tar zxvf cppunit-1.10.2.tar.gz

2. 接下來將準備編譯,以產生cppunit的lib檔,在這之前必須先修改MinGW中的一個Header檔,路徑為:C:/MinGW/include/winuser.h
第3411行的部份,會有一個函式宣告為
BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD); 

主要是因為cygwin下並不直接支援Windwos的GDI函式,所以會在BLENDFUNCTION發生Error!我們只要把以上這行改成如下
#ifndef NOGDI 
BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
#endif

3. 開始編譯cppunit,我們先切換至cppunit的目錄下,再執行configure指令作環境設定,指令如下所示
surt@kurthsu ~
$ cd cppunit-1.10.2
surt@kurthsu ~/cppunit-1.10.2
$ ./configure --disable-shared (表示取消shared library的編譯)

執行完,若無任何錯誤訊息即表示成功,接下來執行make指令,如下輸入
surt@kurthsu ~/cppunit-1.10.2
$ make

同樣地,若是沒有任何錯誤訊息,就表示已經編譯完成,且也產生lib了

三、以Eclipse撰寫測試程式 - 開啟HelloCPPUnitTest Project
1. 開啟Eclipse,然後【File】->【New】->【Project】
2. 在C++目錄下選擇『Standard Make C++ Project』後,按下【Next】
3. 接下來輸入Project Name為『HelloCPPUnitTest』後,按下【Next】
4. 在Binary Parser頁次將『Cygwin PE Parser』選項打勾後,按下【Finish】

四、以Eclipse撰寫測試程式 - 撰寫HelloTestCase
1. 在C/C++ Projects View選擇HelloCPPUnitTest按右鍵選擇【New】->【Other...】
2. 在C++目錄下選擇『Class』後,按下【Next】
3. Name部份輸入HelloTestCase後,按下【Finish】
4. 將HelloCPPUnitTest.h改成以下的code
#ifndef HELLOTESTCASE_H
#define HELLOTESTCASE_H

#include <cppunit/extensions/HelperMacros.h>

class HelloTestCase : public CPPUNIT_NS::TestFixture {
??CPPUNIT_TEST_SUITE( HelloTestCase );
??CPPUNIT_TEST( testHello );
??CPPUNIT_TEST_SUITE_END();
public:
??void testHello();
};

#endif // HELLOTESTCASE_H

5. 將HelloCPPUnitTest.cpp改成以下的code
#include "HelloTestCase.h"

void HelloTestCase::testHello() {
??CPPUNIT_ASSERT( 1 == 0 );
??CPPUNIT_ASSERT( 1 == 1 );

}

五、以Eclipse撰寫測試程式 - 撰寫Test主程式(以TextRunner執行)
1. 新增一個名為main.cpp的檔案,內容為如下的程式碼:
#include <cppunit/ui/text/TestRunner.h>
#include "HelloTestCase.h"

int
main( int argc, char* argv[] ) {
??CPPUNIT_NS::TextUi::TestRunner runner;
??runner.addTest( HelloTestCase::suite() );
??bool wasSuccessful = runner.run();
??
??return wasSuccessful ? 0 : 1;
}

六、以Eclipse撰寫測試程式 - 撰寫Makefile
1. 新增一個名為Makefile的檔案(不用副檔名),其內容如下:
cppunit_lib = C:/cygwin/home/surt/cppunit-1.10.2/src/cppunit/libcppunit.la
cppunit_config = C:/cygwin/home/surt/cppunit-1.10.2/config
objects = HelloTestCase.o Main.o

main : $(objects)
??bash /home/surt/cppunit-1.10.2/libtool --mode=link g++ -g -O2 /
??-o main.exe HelloTestCase.o Main.o ${cppunit_lib}
$(objects) : HelloTestCase.cpp Main.cpp
??g++ -DHAVE_CONFIG_H -I${cppunit_config} -g -O2 -MD -MP -c /
??HelloTestCase.cpp Main.cpp
all :
??${MAKE} main

2. 以上黃色的設定,依個人安裝cygwin及cppunit的路徑而有所不同,其中cppunit_lib為cppunit的library,而libtool為link的工具,而在compile時必須包含cppunit_config所定義的目錄,這些部份均是在編譯cppunit時產生的

七、編譯並執行
1. 編譯Project,【Project】->【Build Project】後,在Console View會產生以下訊息
make -k all 
make main
make[1]: Entering directory `D:/OOP/Workspace/HelloCPPUnitTest'
g++ -DHAVE_CONFIG_H -IC:/cygwin/home/surt/cppunit-1.10.2/config -g -O2 -MD -MP -c /
HelloTestCase.cpp Main.cpp
bash /home/surt/cppunit-1.10.2/libtool --mode=link g++ -g -O2 /
-o main.exe HelloTestCase.o Main.o C:/cygwin/home/surt/cppunit-1.10.2/src/cppunit/libcppunit.la
g++ -g -O2 -o main.exe HelloTestCase.o Main.o C:/cygwin/home/surt/cppunit-1.10.2/src/cppunit/.libs/libcppunit.a
make[1]: Leaving directory `D:/OOP/Workspace/HelloCPPUnitTest'

2. 執行main.exe,選擇【Run】->【Run..】
3. 按下【New】,並將Name設定為『HelloCPPUnitTest』,OK的話就按下【Run】開始執行。執行後就會出現以下畫面:
.F

!!!FAILURES!!!
Test Results:
Run: 1 Failures: 1 Errors: 0

1) test: HelloTestCase::testHello (F) line: 4 HelloTestCase.cpp
assertion failed
- Expression: 1 == 0
上述的方式會有include而發生error,是因為環境變數少了cppunit的include的關係
最後的系統環境變數應如下所示:(以下變數均視其安裝方式而訂)
PATH: C:/MinGW/bin;C:/cygwin/bin
LIBRARY_PATH :C:/cygwin/lib;C:/MinGW/lib
C_INCLUDE_PATH :C:/MinGW/include
CPLUS_INCLUDE_PATH :C:/MinGW/include/c++/3.2.3;C:/MinGW/include/c++/3.2.3/mingw32;C:/MinGW/include/c++/3.2.3/backward;C:/MinGW/include;C:/cygwin/home/surt/cppunit-1.10.2/include

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值