Qt-5開發(fā)及實(shí)例-第16章--Qt-5單元測(cè)試框架課件_第1頁
Qt-5開發(fā)及實(shí)例-第16章--Qt-5單元測(cè)試框架課件_第2頁
Qt-5開發(fā)及實(shí)例-第16章--Qt-5單元測(cè)試框架課件_第3頁
Qt-5開發(fā)及實(shí)例-第16章--Qt-5單元測(cè)試框架課件_第4頁
Qt-5開發(fā)及實(shí)例-第16章--Qt-5單元測(cè)試框架課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第16章 Qt 5單元測(cè)試框架QTestLib框架QTestLib框架Trolltech公司提供的QTestLib是一種針對(duì)基于Qt編寫的程序或庫的單元測(cè)試工具。QTestLib提供了單元測(cè)試框架的基本功能,并提供了針對(duì)GUI測(cè)試的擴(kuò)展功能。QTestLib的特性,見表16.1。特 性詳 細(xì) 描 述輕量級(jí)QTestLib 只包含 6000行代碼和60個(gè)導(dǎo)出符號(hào)自包含對(duì)于非GUI測(cè)試,QTestLib只需要Qt核心庫的幾個(gè)符號(hào)快速測(cè)試QTestLib不需要特殊的測(cè)試執(zhí)行程序,不需要為測(cè)試而進(jìn)行特殊的注冊(cè)數(shù)據(jù)驅(qū)動(dòng)測(cè)試一個(gè)測(cè)試程序可以在不同的測(cè)試數(shù)據(jù)集上執(zhí)行多次基本的GUI測(cè)試QTestLib提供了

2、模擬鼠標(biāo)和鍵盤事件的功能IDE友好QTestLib的輸出信息可以被Visual Studio和KDevelop解析線程安全錯(cuò)誤報(bào)告是線程安全的、原子性的類型安全對(duì)模板進(jìn)行了擴(kuò)展使用,以防止由隱式類型轉(zhuǎn)換引起的錯(cuò)誤易擴(kuò)展用戶自定義類型可以容易地加入測(cè)試數(shù)據(jù)和測(cè)試輸出中第16章 Qt 5單元測(cè)試框架簡單的Qt單元測(cè)試簡單的Qt單元測(cè)試【例】(簡單)(CH1601)首先實(shí)現(xiàn)計(jì)算圓面積的類,然后編寫代碼檢查該類是否完成了相應(yīng)的功能。(1)建立Qt單元測(cè)試框架,步驟如下。選擇“文件”“新建文件或項(xiàng)目”菜單項(xiàng),出現(xiàn)如圖16.1所示的對(duì)話框,選擇“其他項(xiàng)目”“Qt單元測(cè)試”選項(xiàng),單擊“Choose.”按鈕。

3、簡單的Qt單元測(cè)試為測(cè)試項(xiàng)目命名,“名稱”為“AreaTest”,連續(xù)單擊“下一步”按鈕,直至出現(xiàn)如圖16.2所示的對(duì)話框,選擇項(xiàng)目需要包含的模塊。簡單的Qt單元測(cè)試單擊“下一步”按鈕,在如圖16.3所示的對(duì)話框中設(shè)置將要?jiǎng)?chuàng)建的測(cè)試類的基本信息。其中,“類名”命名為“TestArea”,“測(cè)試槽”(即待測(cè)試的函數(shù))命名為“toAreaTest”,依次單擊“下一步”按鈕,直至單擊“完成”按鈕。簡單的Qt單元測(cè)試(2)計(jì)算圓面積類的具體實(shí)現(xiàn)步驟如下。在項(xiàng)目名上單擊鼠標(biāo)右鍵,選擇“添加新文件.”選項(xiàng),在如圖16.4所示的“新建文件”對(duì)話框中,選擇新建“C+ Header File”,單擊“Choos

4、e.”按鈕,在彈出的對(duì)話框中填寫文件的“名稱”為“area”。簡單的Qt單元測(cè)試頭文件“area.h”的具體代碼如下:#include class Area:public QObject Q_OBJECTpublic: Area() Area() Area(const Area &area) m_r = area.m_r; Area(int r) m_r=r; double CountArea() return 3.14*m_r*m_r; private: double m_r;簡單的Qt單元測(cè)試(3)測(cè)試代碼所在的源文件“tst_testarea.cpp”的具體內(nèi)容如下:#include #

5、include #include area.hclass TestArea : public QObject Q_OBJECTpublic: TestArea();private Q_SLOTS: void toAreaTest();/(a);TestArea:TestArea()void TestArea:toAreaTest() Area area(1); QVERIFY(qAbs(area.CountArea()-3.14)0.0000001);/(b) QVERIFY2(true, Failure);QTEST_APPLESS_MAIN(TestArea)/(c)#include ts

6、t_testarea.moc“簡單的Qt單元測(cè)試其中,(a)toAreaTest()函數(shù)是測(cè)試函數(shù),初始化對(duì)象的半徑為1。(b)QVERIFY(qAbs(area.CountArea()-3.14)0.0000001):使用QVERIFY()宏判斷半徑為1的面積是否為3.14。由于浮點(diǎn)數(shù)不能直接比較,所以取值為給定值和實(shí)際值的絕對(duì)值,只要這兩者之差小于0.0000001,就認(rèn)為結(jié)果是正確的。QVERIFY()宏用于檢查表達(dá)式是否為真,如果表達(dá)式為真,則程序繼續(xù)運(yùn)行;否則測(cè)試失敗,程序運(yùn)行終止。如果需要在測(cè)試失敗的時(shí)候輸出信息,則使用QVERIFY2()宏,用法如下: QVERIFY2(cond

7、ition,message);QVERIFY2()宏在“condition”條件驗(yàn)證失敗時(shí),輸出信息“message”。(c)QTEST_APPLESS_MAIN(TestArea):QTEST_APPLESS_MAIN()宏實(shí)現(xiàn)main()函數(shù),并初始化QApplication對(duì)象和測(cè)試類,按照測(cè)試函數(shù)的運(yùn)行順序執(zhí)行所有的測(cè)試。簡單Qt單元測(cè)試輸出結(jié)果如圖16.5所示。第16章 Qt 5單元測(cè)試框架數(shù)據(jù)驅(qū)動(dòng)測(cè)試數(shù)據(jù)驅(qū)動(dòng)測(cè)試【例】(簡單)(CH1602)測(cè)試字符串轉(zhuǎn)換為全小寫字符的功能。(1)建立單元測(cè)試框架(操作方法同前),具體設(shè)置如下。項(xiàng)目名稱:TestQString。測(cè)試類名:TestQ

8、String。測(cè)試槽:testToLower。生成源文件:tst_testqstring.cpp。(2)源文件“tst_testqstring.cpp”的具體代碼。其中,(a) void testToLower():每個(gè)private slot都是一個(gè)被QTest:qExec()自動(dòng)調(diào)用的測(cè)試函數(shù)。(b) void testToLower_data():用于提供測(cè)試數(shù)據(jù)。初始化數(shù)據(jù)的函數(shù)名和測(cè)試函數(shù)名一樣,但增加了后綴“_data()”。(c)QCOMPARE(string.toLower(),result):QCOMPARE(actual,expected)宏使用“等號(hào)”操作符比較實(shí)際值(a

9、ctual)和期望值(expected)。如果兩個(gè)值相等,則程序繼續(xù)執(zhí)行;如果兩個(gè)值不相等,則產(chǎn)生一個(gè)錯(cuò)誤,且程序不再繼續(xù)執(zhí)行。數(shù)據(jù)驅(qū)動(dòng)測(cè)試(3)測(cè)試結(jié)果如圖16.6所示。數(shù)據(jù)驅(qū)動(dòng)測(cè)試【例】(簡單)(CH1603)測(cè)試計(jì)算圓面積的功能。(1)建立單元測(cè)試框架(操作方法同前),具體設(shè)置如下。項(xiàng)目名稱:AreaTest2。測(cè)試類名:TestArea。測(cè)試槽:toArea。生成源文件:tst_testarea.cpp。(2)新建C+頭文件“area.h”,其具體代碼。其中,(a) Q_DECLARE_METATYPE(Area):該宏將Area定義為元類型,這樣所有基于模板的函數(shù)都可以使用Area。

10、而QTest中用到了模板函數(shù)addColumn(),因此必須使用Q_DECLARE_ METATYPE()宏使模板函數(shù)可以識(shí)別Area類。數(shù)據(jù)驅(qū)動(dòng)測(cè)試(3)在源文件“tst_testarea.cpp”中完成測(cè)試工作,其具體實(shí)現(xiàn)代碼。其中,(a) QFETCH(Area,area):通過QFETCH()宏獲取所有數(shù)據(jù)。(b) QVERIFY(qAbs(area.CountArea()-r)0.0000001):QVERIFY()宏將根據(jù)數(shù)據(jù)的多少?zèng)Q定函數(shù)運(yùn)行多少次。(c) QTest:addColumn(area):此處建立了兩列數(shù)據(jù),area列為Area對(duì)象。(d) QTest:addColumn(r):r列是相應(yīng)的Area對(duì)象中計(jì)算圓面積半徑的期望值。(e) QTest:newRow(1)Area(1)3.14:測(cè)試數(shù)據(jù)通過QTest:newRow()函數(shù)加入。(4)測(cè)試結(jié)果如圖16.7所示。第16章 Qt 5單元測(cè)試框架簡單性能測(cè)試簡單性能測(cè)試【例】(簡單)(CH1604)編寫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論