您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > cppUnit
CppUnit Cookbook中文版
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/1/2 10:04:17 ] 推薦標(biāo)簽:CppUnit 單元測試

現(xiàn)在我們準(zhǔn)備添加一些新的操作符和新的測試用例。這時(shí)使用一個(gè)fixture會很方便。如果我們實(shí)例化3到4個(gè)復(fù)數(shù)并在測試中反復(fù)使用它們,可能我們的測試會更好些。
我們這樣做:
* 為fixture的每個(gè)部分添加成員變量。
* Override setUp() 初始化這些變量。
* Override tearDown()釋放你在setUp()中使用的資源。

class ComplexNumberTest : public CppUnit::TestFixture {
private:
Complex *m_10_1, *m_1_1, *m_11_2;
protected:
void setUp()
{
m_10_1 = new Complex( 10, 1 );
m_1_1 = new Complex( 1, 1 );
m_11_2 = new Complex( 11, 2 );
}

void tearDown()
{
delete m_10_1;
delete m_1_1;
delete m_11_2;
}
};

一旦我們擁有了這個(gè)fixture,我們可以添加操作符+,以及整個(gè)開發(fā)過程中其他的任何操作符。

Test Case
為了使用一個(gè)fixture來調(diào)用單獨(dú)的測試,該如何做呢?
分為兩個(gè)步驟:
*以一個(gè)method的形式,在fixture類中寫一個(gè)測試用例
*創(chuàng)建TestCaller來運(yùn)行那個(gè)method

這里是我們加了一些額外的用例method書寫的測試類:
private:
Complex *m_10_1, *m_1_1, *m_11_2;
protected:
void setUp()
{
m_10_1 = new Complex( 10, 1 );
m_1_1 = new Complex( 1, 1 );
m_11_2 = new Complex( 11, 2 );
}

void tearDown()
{
delete m_10_1;
delete m_1_1;
delete m_11_2;
}

void testEquality()
{
CPPUNIT_ASSERT( *m_10_1 == *m_10_1 );
CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) );
}

void testAddition()
{
CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 );
}
};

我們可以象下面這樣為每個(gè)測試用例創(chuàng)建并運(yùn)行一個(gè)實(shí)例:
CppUnit::TestCaller<ComplexNumberTest> test( "testEquality",
&ComplexNumberTest::testEquality );
CppUnit::TestResult result;
test.run( &result );

TestCaller的構(gòu)造函數(shù)的第二個(gè)參數(shù)是ComplexNumberTest中對應(yīng)method的地址。當(dāng)這個(gè)TestCaller運(yùn)行的時(shí)候,指定的method會運(yùn)行。但是,這個(gè)辦法也效果不彰,因?yàn)樗伙@示診斷信息。我們可以使用TestRunner(下面會講到)來顯示這個(gè)診斷信息。

一旦我們有了幾個(gè)測試用例,可以把它們歸入一個(gè)suite中。

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