您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > cppUnit
Linux下的CppUnit 的HelloWorld手記
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/5 15:33:21 ] 推薦標(biāo)簽:

操作系統(tǒng)系統(tǒng):Ubuntu6,g++

軟件版本:cppunit-1.10.2.tar.gz

 

(1)獲得源碼:
    到cppunit.sourceforge.net上下載源代碼。將其復(fù)制到到linux下或者是直接使用wget下載到linux下。


(2)解壓縮:

使用以下命令即可解壓縮
        tar -zxvf cppunit-1.10.2.tar.gz


(3)編譯安裝
    cd進(jìn)cppunit-1.10.2目錄下。
        ./configure

make

make install

make的編譯的文件都在src/cppunit/.libs。

make install只是把鏈接庫(kù)文件復(fù)制到/usr/local/lib,其他的似乎什么都沒(méi)有做。


(4)復(fù)制頭文件

make install沒(méi)有把頭文件安裝到/usr/include中去,此時(shí)還需要手工去復(fù)制,只要把include下面的cppunit目錄復(fù)制到/usr/include下面可以了,命令很簡(jiǎn)單,不寫了。


(5)配置鏈接庫(kù)路徑

    這個(gè)時(shí)候,看起來(lái)似乎已經(jīng)安裝配置成功了,其實(shí)不然,在Ubutu、FC(已知的)動(dòng)態(tài)鏈接庫(kù)的配置文件里面并沒(méi)有寫入/usr/local/lib的路徑,雖然可以編譯過(guò),但是你卻發(fā)現(xiàn)會(huì)運(yùn)行不了,會(huì)出現(xiàn)如是的錯(cuò)誤:
./mytest: error while loading shared libraries: libcppunit-1.10.so.2: cannot open shared object file: No such file or directory

    真是糟糕,此時(shí)你還需要配置一下鏈接庫(kù)的路徑,鏈接庫(kù)配置文件為/etc/ld.so.conf,以下為修改辦法:

    vi /etc/ld.so.conf

在新起一行里面加入:

/usr/local/lib

然后再用ldconfig命令重新裝載一下配置文件可以了:

ldconfig

OK,此時(shí)你已經(jīng)可以正常的編譯并使用了^__^

 

(6)編寫第一個(gè)HelloWorld

撰寫mytest.cpp(從cppunit.sourceforge.net上copy下來(lái)的),代碼如下:

 

#include

#include
#include
#include
#include
#include
#include


class Test : public CPPUNIT_NS::TestCase
{
    CPPUNIT_TEST_SUITE(Test);
    CPPUNIT_TEST(testHelloWorld);
    CPPUNIT_TEST_SUITE_END();

    public:
    void setUp(void) {}
    void tearDown(void) {}

    protected:
    void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
};

CPPUNIT_TEST_SUITE_REGISTRATION(Test);

int main( int argc, char **argv )
{
    // Create the event manager and test controller
    CPPUNIT_NS::TestResult controller;

    // Add a listener that colllects test result
    CPPUNIT_NS::TestResultCollector result;
    controller.addListener( &result );      

    // Add a listener that print dots as test run.
    CPPUNIT_NS::BriefTestProgressListener progress;
    controller.addListener( &progress );    

    // Add the top suite to the test runner
    CPPUNIT_NS::TestRunner runner;
    runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
    runner.run( controller );

    return result.wasSuccessful() ? 0 : 1;
}
將之保存為mytest.cpp。

(7)編譯我們的HelloWorld
你可以鏈接靜態(tài)庫(kù)也可以鏈接靜態(tài)庫(kù)。
(a) 鏈接靜態(tài)庫(kù)。編譯命令:
g++ -L/usr/local/lib/libcppunit.a mytest.cpp -lcppunit -ldl -o mytest

運(yùn)行:
./mytest

結(jié)果:
Test::testHelloWorldHello, world!
: OK

(b) 鏈接動(dòng)態(tài)庫(kù)。編譯命令:
g++ mytest.cpp -lcppunit -ldl -o mytest

運(yùn)行:
./mytest
結(jié)果:
Test::testHelloWorldHello, world!
: OK

      如果你沒(méi)有執(zhí)行步驟(5),那么你也可以在每次運(yùn)行之前設(shè)置下臨時(shí)的環(huán)境變量LD_LIBRARY_PATH命令如下:
       export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

補(bǔ)遺:
非Root用戶是不能夠往/usr/local/lib/和/usr/include里面寫東西的,這個(gè)時(shí)候很煩人了。你只能夠把庫(kù)和頭文件放到home目錄里面。
非Root用戶的安裝需要作如下修改:
步驟三需要修改configure,這里 -prefix=/home/me的意思是把安裝的根目錄設(shè)置為/home/me(我的私人目錄, 我不是管理員所以只好安裝到自己的“家“了),這樣make install的時(shí)候,庫(kù)文件會(huì)復(fù)制到此目錄下的lib目錄里。
./configure -prefix=/home/me

Ok,把頭文件也放置到/home/me里面吧。這樣,情況是:頭文件存儲(chǔ)在/home/me/include,庫(kù)文件存儲(chǔ)在/home/me/lib。
編譯的時(shí)候命令會(huì)像如下所示:
g++ -g -L/home/me/lib -lcppunit -ldl -I/home/me/include Main.C
因?yàn)槭欠莚oot用戶,所以步驟(5)是無(wú)法執(zhí)行的了,想要能夠運(yùn)行測(cè)試程序只能夠執(zhí)行類型類似命令才能夠運(yùn)行了:
export LD_LIBRARY_PATH=/home/me/lib:$LD_LIBRARY_PATH

(注:/home/me里面的me代表的是你的用戶名,在Linux下面,除了root的用戶目錄是在/root下,其他用戶都是在/home下的,目錄名為用戶名。當(dāng)你登錄當(dāng)前用戶之后,在此目錄下。)

單元測(cè)試,終它是要運(yùn)用到工程中去的,如果還那樣用g++命令直接編譯,肯定是行不通的,所以還必須要寫一個(gè)Makefile才可以。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd