版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職第一學(xué)年(機(jī)電一體化技術(shù))工業(yè)機(jī)器人應(yīng)用基礎(chǔ)試題及答案
- 2025年高職(物業(yè)管理)客戶服務(wù)實(shí)務(wù)階段測(cè)試題及答案
- 2025年大學(xué)機(jī)械基礎(chǔ)應(yīng)用技術(shù)(機(jī)械基礎(chǔ)應(yīng)用技術(shù)案例)試題及答案
- 2025年中職(基礎(chǔ)會(huì)計(jì))賬務(wù)處理階段測(cè)試試題及答案
- 2026年兒科護(hù)理(兒童咳嗽案例)試題及答案
- 2025年中職(早期教育)親子教育專業(yè)技能測(cè)試試題及答案
- 2025年高職模具設(shè)計(jì)與制造(模具設(shè)計(jì)制造)試題及答案
- 2025年高職水產(chǎn)養(yǎng)殖技術(shù)(技術(shù)實(shí)操訓(xùn)練)試題及答案
- 2025年大學(xué)學(xué)前教育(幼兒創(chuàng)造力培養(yǎng))試題及答案
- 2025年中職(建筑施工組織與管理)施工管理階段測(cè)試題及答案
- 地坪漆施工方案范本
- 【《自適應(yīng)巡航系統(tǒng)ACC的SOTIF風(fēng)險(xiǎn)的識(shí)別與評(píng)估分析案例》4100字】
- 阿壩州消防救援支隊(duì)2026年面向社會(huì)公開招聘政府專職消防員(69人)筆試備考試題及答案解析
- 2025寧波市甬北糧食收儲(chǔ)有限公司公開招聘工作人員2人筆試參考題庫及答案解析
- 供應(yīng)鏈年底總結(jié)與計(jì)劃
- 2026年國有企業(yè)金華市軌道交通控股集團(tuán)招聘?jìng)淇碱}庫有答案詳解
- 2025年電子工程師年度工作總結(jié)
- 2026年吉林司法警官職業(yè)學(xué)院單招職業(yè)技能筆試備考題庫帶答案解析
- 克林頓1993年就職演講+(中英文)
- 商業(yè)倫理與會(huì)計(jì)職業(yè)道德(第四版)第五章企業(yè)對(duì)外經(jīng)營道德規(guī)范
- DB13 5161-2020 鍋爐大氣污染物排放標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論