本文章轉(zhuǎn)載于搜狗測試
單元測試初體驗
背景:總結(jié)最近一段時間內(nèi)崩潰,發(fā)現(xiàn)輸入法核心層面的崩潰比較多而且好多是黑盒測試手段難以模擬的存筏,比如說傳入的單詞不合法等情況,為解決該問題,想要嘗試做單元測試瑟曲,看看能不能解決士鸥。
一闲孤、環(huán)境搭建:
Gtest是google提供的單元測試框架,因此本次也是沿用該框架烤礁。搭建步驟網(wǎng)上有很多可以參考的資料讼积,我這邊就不贅述〗抛校可以參考下面的文章:
http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html
注意事項:
(1)我的被測工程是x64的勤众,因此gtest 編譯也需要是x64的
(2)第二 開發(fā)工程的環(huán)境是VS2015,因此gtest工程編譯也最好使用VS2015
二鲤脏、用例編寫步驟
(1)確定需要做單元測試的類以及接口
(2)環(huán)境初始化
(3)針對每個參數(shù)做容錯:根據(jù)參數(shù)的類型们颜、范圍吕朵、含義
(4)檢驗結(jié)果
三、實例應(yīng)用
本用例是要對用戶詞庫的加載函數(shù)進行單元測試窥突,每次都需要
將詞庫文件加載到內(nèi)存中努溃,然后在對函數(shù)參數(shù)進行各種校驗。
問題:
這樣寫的話阻问,每個case都會很冗余梧税,每次都要從文件中加載詞庫到內(nèi)存中
再做操作,name有木有什么辦法可以所有用例執(zhí)行前就將環(huán)境初始化称近,執(zhí)行完畢第队,
再恢復(fù)呢。Gtest還真提供了此類功能:可以注冊全局事件煌茬,再所有case執(zhí)行之前
做一些環(huán)境初始化操作斥铺,case執(zhí)行完畢之后,還可以做一些清理工作坛善。
要實現(xiàn)全局事件晾蜘,必須寫一個類,繼承testing::Environment類眠屎,實現(xiàn)里面的SetUp和TearDown方法剔交。
1. SetUp()方法在所有案例執(zhí)行前執(zhí)行
2. TearDown()方法在所有案例執(zhí)行后執(zhí)行
在main函數(shù)中進行注冊聲明:
這樣優(yōu)化之后,我的用例就簡潔多啦:
除了全局事件之外改衩,gtest的事件機制還包括:
(1)TestSuite級別的岖常,在某一批案例中第一個案例前,最后一個案例執(zhí)行后葫督。
(2) TestCase級別的竭鞍,每個TestCase前后。
具體使用哪一種根據(jù)具體需求而定橄镜,有興趣的童鞋可以去詳細了解下偎快。