1.什么是單元測試
定義
單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證政模。對于單元測試中單元的含義笋熬,一般來說,要根據(jù)實(shí)際情況去判定其具體含義菩鲜,如C語言中單元指一個(gè)函數(shù)园细,Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等接校∶推担總的來說,單元就是人為規(guī)定的最小的被測功能模塊蛛勉。單元測試是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動(dòng)鹿寻,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。
2.為何進(jìn)行單元測試
其實(shí)單元測試還是非常有必要寫的主要有以下兩點(diǎn)(最主要的還是前者):
提升逼格
沒錯(cuò)诽凌,程序員世界里沒有太多浮夸的東西烈和,你代碼里面有的,我卻沒有甚至沒聽說過那我承認(rèn)你比我牛逼
代碼穩(wěn)定性
寫代碼如同蓋房子皿淋,一個(gè)好的架構(gòu)確實(shí)很重要招刹,但是在實(shí)際操作中我們可以發(fā)現(xiàn)隨著產(chǎn)品的需求不斷更迭架構(gòu)也是越來越難以維持原來的形狀恬试。一開始也許你對自己的代碼也許很有自信,可以看著一個(gè)個(gè)方法摸著胸自問只要給我正確的輸入疯暑,那么一定會(huì)有正確的輸出训柴。但是實(shí)際情況未必,至少會(huì)有這么一種情況妇拯,你的那位仁兄看你代碼實(shí)在惡心稍微做了一下優(yōu)化幻馁,雖然他知道大概作用但是你隱藏的具體細(xì)節(jié)也只有你知道。恰好這個(gè)方法輸出的結(jié)構(gòu)對整個(gè)邏輯也沒有太大影響越锈,測試的妹紙也測不出來仗嗦。
所以說接下來這款產(chǎn)品可能會(huì)適合你,沒錯(cuò)就是單元測試甘凭。你的工程就好比整幢大樓稀拐,如果某個(gè)燈泡不亮了你不知道具體在那去修理,因?yàn)槟悴恢滥抢锇l(fā)生了短路丹弱,你更不敢跟產(chǎn)品交貨德撬。而單元測試就是在每段線路上加上一段傳感器,如果線路不同傳感器就會(huì)告知你那個(gè)方法出了問題躲胳。
我們舉一個(gè)具體栗子:判斷版本更新一般都會(huì)有雖然實(shí)現(xiàn)方法有很多不同蜓洪,但是主流的還是從服務(wù)器獲取一個(gè)版本號,然后這個(gè)版本號和本地版本號對比坯苹,這個(gè)對比的方法會(huì)出現(xiàn)三種結(jié)果 1服務(wù)器版本號比本地大隆檀,2服務(wù)器版本號比本地小,3相等.我們怎么才能確定這個(gè)方法能夠按照我們想象的那樣輸出想要的結(jié)果呢粹湃?沒錯(cuò)你可以一個(gè)一個(gè)試嘛刚操,先讓服務(wù)器同學(xué)配一個(gè)低版本號,然后再高版本號再芋,最后相等菊霜。這種做法完全沒有錯(cuò)誤〖檬辏可是產(chǎn)品要改需求鉴逞,你就需要更改你的這個(gè)方法。然后你再去麻煩服務(wù)器同學(xué)配置三次司训。但是有了單元測試你就可以寫三個(gè)測試用例构捡,給方法分別輸入三個(gè)與本地不同版本號,當(dāng)然也可以寫30個(gè)用例這取決于你壳猜。修改完代碼后或者交付前跑一次單元測試勾徽,如果全部跑通那么你可以摸胸自問交付你的產(chǎn)品。
說了這么多如果沒有成功對你洗腦那么可執(zhí)行 return;
3.環(huán)境配置
FBIWARNING:
本教程以下內(nèi)容是針對會(huì)使用AS并且能夠自主建立項(xiàng)目并運(yùn)行具有開發(fā)基礎(chǔ)人群編寫统扳,18歲以下兒童及未經(jīng)過特殊訓(xùn)練者請勿觀看喘帚,如果使用eclips用戶請升級到as畅姊。
接下來開始描述正事 請打開你的androidStudio吧
首先在app的gradle中添加如下兩行(一般gradle版本夠新都是生成代碼自帶的)
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12'
然后在app的gradle中defaultConfig下面添加(需要運(yùn)行androidTest時(shí))
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ok基本環(huán)境配置完成
4.目錄介紹
![Uploading Image2_332343.png . . .]
第一個(gè)androidTest下面放的是關(guān)于android的測試代碼需要運(yùn)行在手機(jī)或者模擬器上面,調(diào)用的方法可以是java也可以是android特有的吹由。
第二個(gè)目錄test僅僅是java代碼測試若未,他運(yùn)行在jvm虛擬機(jī)上,不需要外接設(shè)備運(yùn)行很快倾鲫,但是只能是java代碼粗合,像含有l(wèi)og的android代碼就不行有含有context更不行。
5.編寫測試用例
選中需要編寫測試用例的類名乌昔,右鍵會(huì)看到goto->test-->creatNewTest
里面選擇單元測試框架默認(rèn)junity4就行 會(huì)自動(dòng)生成橫線上的需要測試的方法勾選即可
測試生成會(huì)有兩個(gè)選項(xiàng)上面的是android測試隙疚,下面的是java測試
注解使用每個(gè)方法必須有注解@test 需要在運(yùn)行test之前需要@before(可有可無)
assertEquals()方法代表你的預(yù)期輸出結(jié)果跟方法運(yùn)行結(jié)果是否相等
進(jìn)入源碼能看到很多類似方法這里不一一講述
6.運(yùn)行測試用例
運(yùn)行方式很多種
1.直接點(diǎn)擊圖標(biāo)
選擇最后一個(gè)能看到測試日志,你項(xiàng)目的總共方法數(shù)磕道,測試包含了多少供屉,多少通過等等
2.點(diǎn)擊測試類右鍵
3.點(diǎn)擊測試類右鍵
下圖畫線1是android測試 2為java測試 配置testKind 和package即可
以上就是簡單的測試添加,當(dāng)然具體的還有頁面點(diǎn)擊mock等測試